<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>堆栈（栈）Stack | 小傅哥 bugstack 虫洞栈</title>
    <meta name="generator" content="VuePress 1.9.7">
    <link rel="icon" href="../../../favicon.ico">
    <script charset="utf-8" async="async" src="../../../js/jquery.min.js"></script>
    <script charset="utf-8" async="async" src="../../../js/global.js"></script>
    <script charset="utf-8" async="async" src="../../../js/fingerprint2.min.js"></script>
    <script>
              var _hmt = _hmt || [];
              (function() {
                var hm = document.createElement("script");
                hm.src = "https://hm.baidu.com/hm.js?0b31b4c146bf7126aed5009e1a4a11c8";
                var s = document.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(hm, s);
              })();
            </script>
    <meta name="description" content="包含: Java 基础，面经手册，Netty4.x，手写Spring，用Java实现JVM，重学Java设计模式，SpringBoot中间件开发，IDEA插件开发，Lottery抽奖系统，字节码编程...">
    <meta property="article:modified_time" content="2023-09-01T14:03:59.000Z">
    <meta property="og:title" content="堆栈（栈）Stack">
    <meta property="og:type" content="article">
    <meta property="og:url" content="/md/algorithm/data-structures/2022-08-17-stack.html">
    <meta name="twitter:title" content="堆栈（栈）Stack">
    <meta name="twitter:url" content="/md/algorithm/data-structures/2022-08-17-stack.html">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="robots" content="all">
    <meta name="author" content="小傅哥">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta name="keywords" content="小傅哥, bugstack 虫洞栈, DDD抽奖系统，数据结构，重学Java设计模式, 字节码编程, 中间件, 手写Spring, 手写MyBatis，Java基础, 面经手册，Java面试题，API网关，SpringBoot Stater, ChatGPT">
    <meta name="apple-mobile-web-app-capable" content="yes">
    
    <link rel="preload" href="../../../assets/css/0.styles.6a62ca38.css" as="style"><link rel="preload" href="../../../assets/css/styles.css@v=1710892328285" as="style"><link rel="preload" href="../../../assets/js/cg-styles.js@v=1710892328285" as="script"><link rel="preload" href="../../../assets/js/cg-app.js@v=1710892328285" as="script"><link rel="preload" href="../../../assets/js/cg-4.js@v=1710892328285" as="script"><link rel="preload" href="../../../assets/js/cg-3.js@v=1710892328285" as="script"><link rel="preload" href="../../../assets/js/cg-71.js@v=1710892328285" as="script"><link rel="preload" href="../../../assets/js/cg-5.js@v=1710892328285" as="script"><link rel="preload" href="../../../assets/js/cg-6.js@v=1710892328285" as="script">
    <link rel="stylesheet" href="../../../assets/css/0.styles.6a62ca38.css"><link rel="stylesheet" href="../../../assets/css/styles.css@v=1710892328285">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="../../../index.html" class="home-link router-link-active"><!----> <span class="site-name">小傅哥 bugstack 虫洞栈</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="../../other/guide-to-reading.html" class="nav-link">
  导读
</a></div><div class="nav-item"><a href="../../road-map/road-map.html" class="nav-link">
  路书
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="算法" class="dropdown-title"><span class="title">算法</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="data-structures.html" class="nav-link">
  数据结构
</a></li><li class="dropdown-item"><!----> <a href="../logic/math/math.html" class="nav-link">
  算法主题
</a></li><li class="dropdown-item"><!----> <a href="../model/2023-02-12-chat-gpt.html" class="nav-link">
  机器学习
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Java" class="dropdown-title"><span class="title">Java</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/java/interview/2020-07-28-%E9%97%88%E3%88%A2%E7%B2%A1%E9%8E%B5%E5%AC%AA%E5%94%BD%20%E8%B7%AF%20%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A5%E2%82%AC%E5%A9%87%E6%BD%B0%E7%92%87%E6%9B%9E%E7%95%BC%E9%96%AE%E4%BB%8B%E6%A3%B6%E9%8E%B4%E6%88%9D%E6%9A%90%E9%8A%86%8B.html" class="nav-link">
  面经手册
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/java/develop-jvm/2019-05-01-%E9%90%A2%E2%86%97ava%E7%80%B9%E7%82%B5%E5%B9%87JVM%E7%BB%97%EE%83%BF%E7%AB%B4%E7%BB%94%E7%8A%AE%E2%82%AC%E5%A9%82%E6%87%A1%E6%B5%A0%E3%82%88%EE%94%91%E5%AE%B8%E3%83%A5%E5%8F%BF%E9%8A%86%8B.html" class="nav-link">
  用Java实现JVM
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/java/core/2020-01-06-[%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD]%E9%8D%9C%E5%AC%AA%E6%A7%A5%E9%94%9B%E7%86%B6%E7%B6%98%E9%90%A8%E5%87%A6DEA%E6%9D%A9%E5%9B%A8%E6%B9%A1%E6%B5%9C%E5%97%97%E6%83%82%E9%94%9B%E4%BD%B8%E5%A7%9E%E6%B6%93%E7%8B%ABar%E9%8D%96%E5%91%AD%E6%B0%A8%E9%90%AE%E7%A3%8B%D0%92%E6%B5%9C%E5%97%AD%E7%B4%9D%E6%B6%93%E8%BD%B0%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="nav-link">
  基础技术
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Spring" class="dropdown-title"><span class="title">Spring</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/develop-spring/2021-05-16-%E7%BB%97%AC1%E7%BB%94%E7%8B%85%E7%B4%B0%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A6%E7%B2%99%E7%BC%81%E5%B6%8F%E7%B4%9D%E9%8E%B5%E5%AC%AA%E5%95%93Spring%E9%91%B3%E7%95%8C%E7%B2%B0%E6%B5%A3%E7%8A%B2%E7%94%AB%E9%8F%89%E3%83%A4%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="nav-link">
  Spring 手撸专栏
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/develop-mybatis/2022-03-20-%E7%BB%97%AC1%E7%BB%94%E7%8B%85%E7%B4%B0%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A6%E7%B2%99%E7%BC%81%E5%B6%8F%E7%B4%9D%E9%8E%B5%E5%AC%AA%E5%95%93Mybatis%E9%91%B3%E7%95%8C%E7%B2%B0%E6%B5%A3%E7%8A%B2%E7%94%AB%E9%8F%89%E3%83%A4%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="nav-link">
  Mybatis 手撸专栏
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/spring-cloud/2019-10-31-Spring%20Cloud%E9%97%86%E8%BA%B2%E2%82%AC%E5%A9%83%E2%82%AC%E7%BB%98%E6%B9%81%E6%B6%93%E2%82%AC%E9%8D%8B%E5%BF%94%EE%9B%A7%E6%9D%A9%E6%9D%BF%E6%86%A1%E7%92%87%E5%A4%89%E7%B6%98SpringCloud%E9%8F%84%EE%88%99%E7%B2%88%E6%B6%94%E5%A0%9B%E2%82%AC%8B.html" class="nav-link">
  Spring Cloud
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/source-code/2019-12-25-[%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD]Mybatis%E9%8E%BA%E3%83%A5%E5%BD%9B%E5%A8%8C%E2%84%83%E6%B9%81%E7%80%B9%E7%82%B5%E5%B9%87%E7%BB%AB%E8%AE%B3%E8%B4%9F%E6%B5%A0%E2%82%AC%E6%B6%94%E5%A0%9D%E5%BD%B2%E6%B5%A0%E3%83%A6%E5%A2%BD%E7%90%9B%E5%B1%BD%EE%96%83%E9%8D%92%E7%8A%B3%E6%95%BC%E9%8F%8C%A5.html" class="nav-link">
  源码分析(Mybatis、Quartz)
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="面向对象" class="dropdown-title"><span class="title">面向对象</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          重学Java设计模式
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-05-20-%E9%96%B2%E5%B6%85%EE%84%9FJava%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%82%E7%96%84%E9%8E%B4%E6%A8%BA%E4%BC%90%E9%8D%98%E5%82%9B%E6%9F%9F%E5%A8%89%E6%9B%9F%C4%81%E5%AF%AE%E5%BF%8B%E2%82%AC%8B.html" class="nav-link">
  创建型模式
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-06-02-%E9%96%B2%E5%B6%85%EE%84%9F%20Java%20%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%87%E2%82%AC%E5%82%9E%E5%8E%A4%E9%8D%A3%E3%84%A6%C4%81%E5%AF%AE%E5%BF%8B%E2%82%AC%8B.html" class="nav-link">
  结构型模式
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-06-18-%E9%96%B2%E5%B6%85%EE%84%9F%20Java%20%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%82%E7%96%84%E9%8E%B4%E6%A8%BF%E7%9F%97%E6%B5%A0%E5%A9%9A%E6%91%BC%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%8B.html" class="nav-link">
  行为型模式
</a></li></ul></li><li class="dropdown-item"><h4>
          系统架构
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/framework/ddd/2019-10-15-DDD%E6%B6%93%E6%92%BB%EE%95%BD%E5%A6%97%E5%A0%9C%E7%B7%A5%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E5%9E%B5%E7%92%87%E5%97%9B%EE%95%AB%E9%8D%A9%E7%86%BC%E2%94%8D%E9%8D%94%E3%84%A8%EE%86%95%E7%92%81%EE%93%8ADD%E9%92%80%E8%97%89%E6%B9%B4%E9%8A%86%8B.html" class="nav-link">
  DDD 专题
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/framework/frame/2019-12-22-%E9%8F%8B%E8%88%B5%E7%80%AF%E5%A6%97%E5%97%98%E7%81%A6%E9%8E%BC%EE%85%9E%E7%BC%93%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E5%B4%9F%E6%B5%A3%E6%92%B3%E7%B0%B2%E9%90%A2%E3%84%A6%E6%B9%87%E9%8D%94%E2%80%B2%E7%AE%A3SSM%E9%8F%81%E6%9D%91%E6%82%8E%E9%94%9B%E6%AD%8Bpring4%20+%20SpringMvc%20+%20Mybatis%E9%8A%86%8B.html" class="nav-link">
  工程框架
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-02-04-%E9%8D%A9%E8%BD%B0%E7%B0%ACIDEA%E9%8E%BB%E6%8E%8D%E6%AC%A2%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%9D%E6%8B%B0%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%B9%E5%BD%83%E5%A6%97%E2%95%82%E5%A6%A7%E9%8F%88%EE%88%A4%E7%B4%9D%E7%80%B9%E7%82%B5%E5%B9%87%E9%90%AE%E6%96%BF%E5%BD%82%E6%B5%9C%E3%82%84%E7%B2%AF%E7%92%90%E3%84%A9%E5%99%BA%E9%91%B7%EE%81%84%E5%A7%A9%E9%8D%92%E5%97%98%E7%80%BD.html" class="nav-link">
  架构方案
</a></li></ul></li><li class="dropdown-item"><h4>
          标准
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/standard/2020-09-14-%E6%B6%93%E2%82%AC%E5%A8%86%E2%80%B2%E5%94%AC%E9%90%AE%E4%BD%BD%E7%98%8E%E7%80%B9%E2%98%85%E7%B4%9D%E5%AE%B8%EE%86%BE%E5%81%A3%E6%9D%A9%E5%9B%A6%E7%AC%89%E6%B5%9C%E5%97%9A%E7%98%AF%E9%90%A2%E3%84%A6%E6%B9%A1%E9%94%9B%81.html" class="nav-link">
  开发规范&amp;事故
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="中间件" class="dropdown-title"><span class="title">中间件</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/assembly/middleware/2019-12-02-SpringBoot%E9%8F%88%E5%B6%85%E5%A7%9F%E5%A8%8C%E8%8D%A4%E6%82%8A%E6%B6%93%EE%85%A2%E6%A3%BF%E6%B5%A0%E6%9C%B5%E7%AE%A3%E7%BC%81%E7%86%B6%E7%AB%B4%E9%90%A7%E8%97%89%E6%82%95%E9%8D%97%E6%9B%A2%E7%8D%99%E7%92%87%81.html" class="nav-link">
  SpringBoot 中间件开发
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/assembly/idea-plugin/2021-08-27-%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%9D%E7%9A%9F%E9%90%AE%E6%97%93%E7%B4%9DIDEA%20%E9%8E%BB%E6%8E%8D%E6%AC%A2%E9%8E%AC%E5%BA%9D%E7%AE%9E%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%AF%E7%B4%B5.html" class="nav-link">
  IDEA Plugin 开发手册
</a></li><li class="dropdown-item"><!----> <a href="../../assembly/api-gateway/api-gateway.html" class="nav-link">
  API网关：中间件设计和实践
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Netty 4.x" class="dropdown-title"><span class="title">Netty 4.x</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/base/2019-07-30-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E9%8D%A9%E8%99%B9%EE%94%85%E9%8D%8F%E3%83%A9%E6%A3%AC%E7%BB%A1%E5%9B%AC%E6%B5%82%E9%8A%86%E5%A9%82%E5%9E%B5%E9%8D%8F%EE%99%90avaIO%E6%B6%94%E5%AC%AE%E6%A3%ACBIO%E9%8A%86%E4%B8%AFIO%E9%8A%86%E4%B8%84IO%E7%80%B9%E7%82%B4%E5%9E%AC%E7%BC%81%E5%86%A7%E7%AF%84%E9%8A%86%8B.html" class="nav-link">
  基础入门篇
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/expand/2019-08-16-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E6%B6%93%EE%85%A0%E9%AA%87%E9%8E%B7%E6%92%B3%E7%9D%8D%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A5%9Betty%E6%B6%93%E5%B6%B4pringBoot%E9%8F%81%E6%9D%91%E6%82%8E%E9%8A%86%8B.html" class="nav-link">
  中级拓展篇
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/application/2019-09-01-%E9%8E%B5%E5%AC%AA%E5%95%93RPC%E5%A6%97%E5%97%98%E7%81%A6%E7%BB%97%EE%83%BF%E7%AB%B4%E7%BB%94%E7%8A%AE%E2%82%AC%E5%A9%85%E5%9A%9C%E7%80%B9%E6%B0%AB%E7%AE%9F%E9%96%B0%E5%B6%87%E7%96%86xml%E9%8A%86%8B.html" class="nav-link">
  高级应用篇
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/source-code/2019-09-10-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A5%9BioEventLoopGroup%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD%E9%8A%86%8B.html" class="nav-link">
  源码分析篇
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="字节码编程" class="dropdown-title"><span class="title">字节码编程</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          框架
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/asm/2020-03-25-[ASM%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AA%87%E6%BF%A1%E5%82%9B%E7%81%89%E6%B5%A3%E7%8A%B2%E5%BD%A7%E9%8D%90%E6%A9%9FRUD%E9%94%9B%E5%B2%84%E5%81%85%E6%9D%A9%E6%AC%91%EE%9D%92%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%99%E7%B6%98%E5%A7%98%E6%AD%8C%E7%B9%99%E7%BA%B0%E9%A2%81%E7%AC%89%E9%8D%92%B0.html" class="nav-link">
  ASM
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/javassist/2020-04-19-%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%B6%E7%B4%9DJavassist%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A9%82%E7%86%80%E6%B5%9C%E5%B7%8Eavassist%E9%90%A8%E5%8B%AD%EE%83%87%E6%B6%93%E2%82%AC%E6%B6%93%EE%81%85%EE%94%8D%E6%B8%9A%E5%AA%93elloworld%E9%8A%86%8B.html" class="nav-link">
  Javassist
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/byte-buddy/2020-05-08-%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%B6%E7%B4%9DByte-buddy%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A9%82%E7%86%80%E6%B5%9C%E5%B6%A3yte%20Buddy%E7%92%87%EE%85%9F%E7%A1%B6%E9%8D%92%E6%B6%98%E7%BC%93%E9%90%A8%E5%8B%AD%EE%83%87%E6%B6%93%E2%82%AC%E6%B6%93%E7%8B%A7elloWorld%E9%8A%86%8B.html" class="nav-link">
  Byte-Buddy
</a></li></ul></li><li class="dropdown-item"><h4>
          全链路监控
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/agent/2019-07-10-%E9%8D%A9%E8%BD%B0%E7%B0%ACJavaAgent%E9%90%A8%E5%8B%AB%E5%8F%8F%E9%96%BE%E6%8D%90%E7%9F%BE%E9%90%A9%E6%88%9E%E5%B8%B6%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E6%A3%AC%E9%94%9B%E4%B8%A3avaAgent%E9%8A%86%8B.html" class="nav-link">
  JavaAgent
</a></li></ul></li><li class="dropdown-item"><h4>
          文档
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/asm-document/1%E5%AF%AE%E6%9B%A1%E2%96%88.html" class="nav-link">
  ASM-DOC
</a></li></ul></li></ul></div></div><div class="nav-item"><a href="../../devops/2023-04-18-tool.html" class="nav-link">
  部署
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="💯实战项目" class="dropdown-title"><span class="title">💯实战项目</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          业务类型
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../project/big-market/big-market.html" class="nav-link">
  大营销平台系统
</a></li><li class="dropdown-subitem"><a href="../../project/chatgpt/chatgpt.html" class="nav-link">
  OpenAi 大模型应用服务体系构建
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/project/lottery/introduce/Lottery%E9%8E%B6%E8%97%89%EE%9A%9B%E7%BB%AF%E8%8D%A4%E7%B2%BA.html" class="nav-link">
  Lottery 分布式抽奖系统
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/project/im/2020-03-04-%E9%8A%86%E5%A5%9Betty+JavaFx%E7%80%B9%E7%82%B4%E5%9E%AC%E9%94%9B%E6%B0%AB%E8%B1%A2%E5%A6%97%E5%B2%84%E6%BD%B0%E9%90%97%E5%A0%9D%E4%BA%95%E6%B7%87%C2%A4%E4%BA%B0%E6%BE%B6%E2%94%BF%E2%82%AC%8B.html" class="nav-link">
  IM Netty 仿PC端微信
</a></li><li class="dropdown-subitem"><a href="../../project/chatbot-api/chatbot-api.html" class="nav-link">
  ChatGPT AI 问答助手
</a></li></ul></li><li class="dropdown-item"><h4>
          组件类型
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://bugstack.cn/md/assembly/middleware/2021-03-31-%E3%80%8ASpringBoot%20%E4%B8%AD%E9%97%B4%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%BC%80%E5%8F%91%E3%80%8B%E4%B8%93%E6%A0%8F%E5%B0%8F%E5%86%8C%E4%B8%8A%E7%BA%BF%E5%95%A6%EF%BC%81.html" target="_blank" rel="noopener noreferrer" class="nav-link external">
  SpringBoot 中间件设计和开发
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="https://bugstack.cn/md/assembly/api-gateway/api-gateway.html" target="_blank" rel="noopener noreferrer" class="nav-link external">
  API网关：中间件设计和实践
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></li><li class="dropdown-item"><h4>
          其他类型
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../project/ddd-scene-solution/alipay-sandbox.html" class="nav-link">
  小场景训练营
</a></li></ul></li></ul></div></div><div class="nav-item"><a href="../../zsxq/introduce.html" class="nav-link">
  🌍知识星球
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="📝产品" class="dropdown-title"><span class="title">📝产品</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          出版物
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../product/book/design-pattern.html" class="nav-link">
  2021年出版《重学Java设计模式》
</a></li><li class="dropdown-subitem"><a href="../../product/book/mybatis.html" class="nav-link">
  2023年出版《手写MyBatis：渐进式源码实践》
</a></li></ul></li><li class="dropdown-item"><h4>
          PDF —— 加入星球免费获取
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="http://pan.bugstack.cn/?dl=05b281eff1476e2c22eb5114ced0dc4d" target="_blank" rel="noopener noreferrer" class="nav-link external">
  免费《字节码编程手册》(密码：Rlxbh1ia)
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="http://pan.bugstack.cn/?dl=431e114a26f810655d29b6dea54a680f" target="_blank" rel="noopener noreferrer" class="nav-link external">
  免费《重学Java设计模式》——旧版PDF(密码：FWchEAF6)
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="http://pan.bugstack.cn/?dl=dbed614f318bf9fc9d3b034ba9502a3c" target="_blank" rel="noopener noreferrer" class="nav-link external">
  免费《倚天村 • 图解数据结构》(密码：0SjbAlPa)
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="https://download.csdn.net/download/Yao__Shun__Yu/14932325" target="_blank" rel="noopener noreferrer" class="nav-link external">
  付费《Java 面经手册》
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="https://download.csdn.net/download/Yao__Shun__Yu/77484299" target="_blank" rel="noopener noreferrer" class="nav-link external">
  付费《IDEA Plugin 开发手册》
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></li><li class="dropdown-item"><h4>
          插件
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../product/idea-plugin/vo2dto.html" class="nav-link">
  💱 IDEA Plugin vo2dto —— 对象转换插件
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="关于" class="dropdown-title"><span class="title">关于</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="../../about/me/about-me.html" class="nav-link">
  关于自己
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/about/study/2020-04-30-%E7%92%81%E6%9F%A5%E4%BA%BE%E9%90%9E%E5%97%AD%E7%B4%9D%E9%8D%99%EE%81%87%EE%9B%A6%E6%B5%A3%E7%8A%B3%E6%A7%B8%E6%B6%93%E2%82%AC%E6%B6%93%EE%81%86%E5%9F%8D%E9%8E%B6%E6%A8%BF%E5%90%98%E9%90%A8%E5%8B%AD%E2%96%BC%E6%90%B4%E5%BF%93%E6%86%B3%E9%94%9B%E5%B1%BE%E7%98%AF%E6%B6%93%E6%B0%AD%E5%A3%98%E5%AE%B8%E3%83%A4%E7%B6%94%E9%90%AA%E7%86%BA%E6%AE%91%E6%B6%93%E5%B6%89%E6%B8%B6%E7%91%95%E4%BD%B8%E5%95%80%E9%91%BA%E9%81%8D%E6%8C%B6%E9%8D%A9%E7%A1%85%EE%86%84.html" class="nav-link">
  关于学习
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/about/job/2020-04-11-%E5%AE%B8%E3%83%A4%E7%B6%94%E6%B6%93%E3%82%85%E5%8B%BE%E7%BB%A0%E2%82%AC%E9%8D%98%E5%97%97%E5%95%93%E9%8E%B4%E6%84%AF%E7%B9%96%E9%8F%8D%E5%87%A4%E7%B4%9D%E7%92%8B%E4%BD%BD%EE%9B%A6%E6%B5%A3%E7%8A%B2%E6%86%96%E9%94%9B%81.html" class="nav-link">
  关于职场
</a></li></ul></div></div><div class="nav-item"><a href="https://space.bilibili.com/15637440" target="_blank" rel="noopener noreferrer" class="nav-link external">
  B站
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="源码" class="dropdown-title"><span class="title">源码</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/fuzhengwei" target="_blank" rel="noopener noreferrer" class="nav-link external">
  开源项目 - Github
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://gitcode.net/fuzhengwei" target="_blank" rel="noopener noreferrer" class="nav-link external">
  开源项目 - Gitcode
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://gitcode.net/KnowledgePlanet" target="_blank" rel="noopener noreferrer" class="nav-link external">
  付费项目 - Gitcode
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="../../other/guide-to-reading.html" class="nav-link">
  导读
</a></div><div class="nav-item"><a href="../../road-map/road-map.html" class="nav-link">
  路书
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="算法" class="dropdown-title"><span class="title">算法</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="data-structures.html" class="nav-link">
  数据结构
</a></li><li class="dropdown-item"><!----> <a href="../logic/math/math.html" class="nav-link">
  算法主题
</a></li><li class="dropdown-item"><!----> <a href="../model/2023-02-12-chat-gpt.html" class="nav-link">
  机器学习
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Java" class="dropdown-title"><span class="title">Java</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/java/interview/2020-07-28-%E9%97%88%E3%88%A2%E7%B2%A1%E9%8E%B5%E5%AC%AA%E5%94%BD%20%E8%B7%AF%20%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A5%E2%82%AC%E5%A9%87%E6%BD%B0%E7%92%87%E6%9B%9E%E7%95%BC%E9%96%AE%E4%BB%8B%E6%A3%B6%E9%8E%B4%E6%88%9D%E6%9A%90%E9%8A%86%8B.html" class="nav-link">
  面经手册
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/java/develop-jvm/2019-05-01-%E9%90%A2%E2%86%97ava%E7%80%B9%E7%82%B5%E5%B9%87JVM%E7%BB%97%EE%83%BF%E7%AB%B4%E7%BB%94%E7%8A%AE%E2%82%AC%E5%A9%82%E6%87%A1%E6%B5%A0%E3%82%88%EE%94%91%E5%AE%B8%E3%83%A5%E5%8F%BF%E9%8A%86%8B.html" class="nav-link">
  用Java实现JVM
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/java/core/2020-01-06-[%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD]%E9%8D%9C%E5%AC%AA%E6%A7%A5%E9%94%9B%E7%86%B6%E7%B6%98%E9%90%A8%E5%87%A6DEA%E6%9D%A9%E5%9B%A8%E6%B9%A1%E6%B5%9C%E5%97%97%E6%83%82%E9%94%9B%E4%BD%B8%E5%A7%9E%E6%B6%93%E7%8B%ABar%E9%8D%96%E5%91%AD%E6%B0%A8%E9%90%AE%E7%A3%8B%D0%92%E6%B5%9C%E5%97%AD%E7%B4%9D%E6%B6%93%E8%BD%B0%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="nav-link">
  基础技术
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Spring" class="dropdown-title"><span class="title">Spring</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/develop-spring/2021-05-16-%E7%BB%97%AC1%E7%BB%94%E7%8B%85%E7%B4%B0%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A6%E7%B2%99%E7%BC%81%E5%B6%8F%E7%B4%9D%E9%8E%B5%E5%AC%AA%E5%95%93Spring%E9%91%B3%E7%95%8C%E7%B2%B0%E6%B5%A3%E7%8A%B2%E7%94%AB%E9%8F%89%E3%83%A4%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="nav-link">
  Spring 手撸专栏
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/develop-mybatis/2022-03-20-%E7%BB%97%AC1%E7%BB%94%E7%8B%85%E7%B4%B0%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A6%E7%B2%99%E7%BC%81%E5%B6%8F%E7%B4%9D%E9%8E%B5%E5%AC%AA%E5%95%93Mybatis%E9%91%B3%E7%95%8C%E7%B2%B0%E6%B5%A3%E7%8A%B2%E7%94%AB%E9%8F%89%E3%83%A4%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="nav-link">
  Mybatis 手撸专栏
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/spring-cloud/2019-10-31-Spring%20Cloud%E9%97%86%E8%BA%B2%E2%82%AC%E5%A9%83%E2%82%AC%E7%BB%98%E6%B9%81%E6%B6%93%E2%82%AC%E9%8D%8B%E5%BF%94%EE%9B%A7%E6%9D%A9%E6%9D%BF%E6%86%A1%E7%92%87%E5%A4%89%E7%B6%98SpringCloud%E9%8F%84%EE%88%99%E7%B2%88%E6%B6%94%E5%A0%9B%E2%82%AC%8B.html" class="nav-link">
  Spring Cloud
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/spring/source-code/2019-12-25-[%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD]Mybatis%E9%8E%BA%E3%83%A5%E5%BD%9B%E5%A8%8C%E2%84%83%E6%B9%81%E7%80%B9%E7%82%B5%E5%B9%87%E7%BB%AB%E8%AE%B3%E8%B4%9F%E6%B5%A0%E2%82%AC%E6%B6%94%E5%A0%9D%E5%BD%B2%E6%B5%A0%E3%83%A6%E5%A2%BD%E7%90%9B%E5%B1%BD%EE%96%83%E9%8D%92%E7%8A%B3%E6%95%BC%E9%8F%8C%A5.html" class="nav-link">
  源码分析(Mybatis、Quartz)
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="面向对象" class="dropdown-title"><span class="title">面向对象</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          重学Java设计模式
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-05-20-%E9%96%B2%E5%B6%85%EE%84%9FJava%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%82%E7%96%84%E9%8E%B4%E6%A8%BA%E4%BC%90%E9%8D%98%E5%82%9B%E6%9F%9F%E5%A8%89%E6%9B%9F%C4%81%E5%AF%AE%E5%BF%8B%E2%82%AC%8B.html" class="nav-link">
  创建型模式
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-06-02-%E9%96%B2%E5%B6%85%EE%84%9F%20Java%20%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%87%E2%82%AC%E5%82%9E%E5%8E%A4%E9%8D%A3%E3%84%A6%C4%81%E5%AF%AE%E5%BF%8B%E2%82%AC%8B.html" class="nav-link">
  结构型模式
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-06-18-%E9%96%B2%E5%B6%85%EE%84%9F%20Java%20%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%82%E7%96%84%E9%8E%B4%E6%A8%BF%E7%9F%97%E6%B5%A0%E5%A9%9A%E6%91%BC%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%8B.html" class="nav-link">
  行为型模式
</a></li></ul></li><li class="dropdown-item"><h4>
          系统架构
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/framework/ddd/2019-10-15-DDD%E6%B6%93%E6%92%BB%EE%95%BD%E5%A6%97%E5%A0%9C%E7%B7%A5%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E5%9E%B5%E7%92%87%E5%97%9B%EE%95%AB%E9%8D%A9%E7%86%BC%E2%94%8D%E9%8D%94%E3%84%A8%EE%86%95%E7%92%81%EE%93%8ADD%E9%92%80%E8%97%89%E6%B9%B4%E9%8A%86%8B.html" class="nav-link">
  DDD 专题
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/framework/frame/2019-12-22-%E9%8F%8B%E8%88%B5%E7%80%AF%E5%A6%97%E5%97%98%E7%81%A6%E9%8E%BC%EE%85%9E%E7%BC%93%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E5%B4%9F%E6%B5%A3%E6%92%B3%E7%B0%B2%E9%90%A2%E3%84%A6%E6%B9%87%E9%8D%94%E2%80%B2%E7%AE%A3SSM%E9%8F%81%E6%9D%91%E6%82%8E%E9%94%9B%E6%AD%8Bpring4%20+%20SpringMvc%20+%20Mybatis%E9%8A%86%8B.html" class="nav-link">
  工程框架
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-02-04-%E9%8D%A9%E8%BD%B0%E7%B0%ACIDEA%E9%8E%BB%E6%8E%8D%E6%AC%A2%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%9D%E6%8B%B0%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%B9%E5%BD%83%E5%A6%97%E2%95%82%E5%A6%A7%E9%8F%88%EE%88%A4%E7%B4%9D%E7%80%B9%E7%82%B5%E5%B9%87%E9%90%AE%E6%96%BF%E5%BD%82%E6%B5%9C%E3%82%84%E7%B2%AF%E7%92%90%E3%84%A9%E5%99%BA%E9%91%B7%EE%81%84%E5%A7%A9%E9%8D%92%E5%97%98%E7%80%BD.html" class="nav-link">
  架构方案
</a></li></ul></li><li class="dropdown-item"><h4>
          标准
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/develop/standard/2020-09-14-%E6%B6%93%E2%82%AC%E5%A8%86%E2%80%B2%E5%94%AC%E9%90%AE%E4%BD%BD%E7%98%8E%E7%80%B9%E2%98%85%E7%B4%9D%E5%AE%B8%EE%86%BE%E5%81%A3%E6%9D%A9%E5%9B%A6%E7%AC%89%E6%B5%9C%E5%97%9A%E7%98%AF%E9%90%A2%E3%84%A6%E6%B9%A1%E9%94%9B%81.html" class="nav-link">
  开发规范&amp;事故
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="中间件" class="dropdown-title"><span class="title">中间件</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/assembly/middleware/2019-12-02-SpringBoot%E9%8F%88%E5%B6%85%E5%A7%9F%E5%A8%8C%E8%8D%A4%E6%82%8A%E6%B6%93%EE%85%A2%E6%A3%BF%E6%B5%A0%E6%9C%B5%E7%AE%A3%E7%BC%81%E7%86%B6%E7%AB%B4%E9%90%A7%E8%97%89%E6%82%95%E9%8D%97%E6%9B%A2%E7%8D%99%E7%92%87%81.html" class="nav-link">
  SpringBoot 中间件开发
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/assembly/idea-plugin/2021-08-27-%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%9D%E7%9A%9F%E9%90%AE%E6%97%93%E7%B4%9DIDEA%20%E9%8E%BB%E6%8E%8D%E6%AC%A2%E9%8E%AC%E5%BA%9D%E7%AE%9E%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%AF%E7%B4%B5.html" class="nav-link">
  IDEA Plugin 开发手册
</a></li><li class="dropdown-item"><!----> <a href="../../assembly/api-gateway/api-gateway.html" class="nav-link">
  API网关：中间件设计和实践
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Netty 4.x" class="dropdown-title"><span class="title">Netty 4.x</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/base/2019-07-30-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E9%8D%A9%E8%99%B9%EE%94%85%E9%8D%8F%E3%83%A9%E6%A3%AC%E7%BB%A1%E5%9B%AC%E6%B5%82%E9%8A%86%E5%A9%82%E5%9E%B5%E9%8D%8F%EE%99%90avaIO%E6%B6%94%E5%AC%AE%E6%A3%ACBIO%E9%8A%86%E4%B8%AFIO%E9%8A%86%E4%B8%84IO%E7%80%B9%E7%82%B4%E5%9E%AC%E7%BC%81%E5%86%A7%E7%AF%84%E9%8A%86%8B.html" class="nav-link">
  基础入门篇
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/expand/2019-08-16-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E6%B6%93%EE%85%A0%E9%AA%87%E9%8E%B7%E6%92%B3%E7%9D%8D%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A5%9Betty%E6%B6%93%E5%B6%B4pringBoot%E9%8F%81%E6%9D%91%E6%82%8E%E9%8A%86%8B.html" class="nav-link">
  中级拓展篇
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/application/2019-09-01-%E9%8E%B5%E5%AC%AA%E5%95%93RPC%E5%A6%97%E5%97%98%E7%81%A6%E7%BB%97%EE%83%BF%E7%AB%B4%E7%BB%94%E7%8A%AE%E2%82%AC%E5%A9%85%E5%9A%9C%E7%80%B9%E6%B0%AB%E7%AE%9F%E9%96%B0%E5%B6%87%E7%96%86xml%E9%8A%86%8B.html" class="nav-link">
  高级应用篇
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/netty/source-code/2019-09-10-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A5%9BioEventLoopGroup%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD%E9%8A%86%8B.html" class="nav-link">
  源码分析篇
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="字节码编程" class="dropdown-title"><span class="title">字节码编程</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          框架
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/asm/2020-03-25-[ASM%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AA%87%E6%BF%A1%E5%82%9B%E7%81%89%E6%B5%A3%E7%8A%B2%E5%BD%A7%E9%8D%90%E6%A9%9FRUD%E9%94%9B%E5%B2%84%E5%81%85%E6%9D%A9%E6%AC%91%EE%9D%92%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%99%E7%B6%98%E5%A7%98%E6%AD%8C%E7%B9%99%E7%BA%B0%E9%A2%81%E7%AC%89%E9%8D%92%B0.html" class="nav-link">
  ASM
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/javassist/2020-04-19-%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%B6%E7%B4%9DJavassist%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A9%82%E7%86%80%E6%B5%9C%E5%B7%8Eavassist%E9%90%A8%E5%8B%AD%EE%83%87%E6%B6%93%E2%82%AC%E6%B6%93%EE%81%85%EE%94%8D%E6%B8%9A%E5%AA%93elloworld%E9%8A%86%8B.html" class="nav-link">
  Javassist
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/byte-buddy/2020-05-08-%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%B6%E7%B4%9DByte-buddy%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A9%82%E7%86%80%E6%B5%9C%E5%B6%A3yte%20Buddy%E7%92%87%EE%85%9F%E7%A1%B6%E9%8D%92%E6%B6%98%E7%BC%93%E9%90%A8%E5%8B%AD%EE%83%87%E6%B6%93%E2%82%AC%E6%B6%93%E7%8B%A7elloWorld%E9%8A%86%8B.html" class="nav-link">
  Byte-Buddy
</a></li></ul></li><li class="dropdown-item"><h4>
          全链路监控
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/agent/2019-07-10-%E9%8D%A9%E8%BD%B0%E7%B0%ACJavaAgent%E9%90%A8%E5%8B%AB%E5%8F%8F%E9%96%BE%E6%8D%90%E7%9F%BE%E9%90%A9%E6%88%9E%E5%B8%B6%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E6%A3%AC%E9%94%9B%E4%B8%A3avaAgent%E9%8A%86%8B.html" class="nav-link">
  JavaAgent
</a></li></ul></li><li class="dropdown-item"><h4>
          文档
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/bytecode/asm-document/1%E5%AF%AE%E6%9B%A1%E2%96%88.html" class="nav-link">
  ASM-DOC
</a></li></ul></li></ul></div></div><div class="nav-item"><a href="../../devops/2023-04-18-tool.html" class="nav-link">
  部署
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="💯实战项目" class="dropdown-title"><span class="title">💯实战项目</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          业务类型
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../project/big-market/big-market.html" class="nav-link">
  大营销平台系统
</a></li><li class="dropdown-subitem"><a href="../../project/chatgpt/chatgpt.html" class="nav-link">
  OpenAi 大模型应用服务体系构建
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/project/lottery/introduce/Lottery%E9%8E%B6%E8%97%89%EE%9A%9B%E7%BB%AF%E8%8D%A4%E7%B2%BA.html" class="nav-link">
  Lottery 分布式抽奖系统
</a></li><li class="dropdown-subitem"><a href="https://www.bugstack.cn/md/project/im/2020-03-04-%E9%8A%86%E5%A5%9Betty+JavaFx%E7%80%B9%E7%82%B4%E5%9E%AC%E9%94%9B%E6%B0%AB%E8%B1%A2%E5%A6%97%E5%B2%84%E6%BD%B0%E9%90%97%E5%A0%9D%E4%BA%95%E6%B7%87%C2%A4%E4%BA%B0%E6%BE%B6%E2%94%BF%E2%82%AC%8B.html" class="nav-link">
  IM Netty 仿PC端微信
</a></li><li class="dropdown-subitem"><a href="../../project/chatbot-api/chatbot-api.html" class="nav-link">
  ChatGPT AI 问答助手
</a></li></ul></li><li class="dropdown-item"><h4>
          组件类型
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="https://bugstack.cn/md/assembly/middleware/2021-03-31-%E3%80%8ASpringBoot%20%E4%B8%AD%E9%97%B4%E4%BB%B6%E8%AE%BE%E8%AE%A1%E5%92%8C%E5%BC%80%E5%8F%91%E3%80%8B%E4%B8%93%E6%A0%8F%E5%B0%8F%E5%86%8C%E4%B8%8A%E7%BA%BF%E5%95%A6%EF%BC%81.html" target="_blank" rel="noopener noreferrer" class="nav-link external">
  SpringBoot 中间件设计和开发
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="https://bugstack.cn/md/assembly/api-gateway/api-gateway.html" target="_blank" rel="noopener noreferrer" class="nav-link external">
  API网关：中间件设计和实践
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></li><li class="dropdown-item"><h4>
          其他类型
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../project/ddd-scene-solution/alipay-sandbox.html" class="nav-link">
  小场景训练营
</a></li></ul></li></ul></div></div><div class="nav-item"><a href="../../zsxq/introduce.html" class="nav-link">
  🌍知识星球
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="📝产品" class="dropdown-title"><span class="title">📝产品</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><h4>
          出版物
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../product/book/design-pattern.html" class="nav-link">
  2021年出版《重学Java设计模式》
</a></li><li class="dropdown-subitem"><a href="../../product/book/mybatis.html" class="nav-link">
  2023年出版《手写MyBatis：渐进式源码实践》
</a></li></ul></li><li class="dropdown-item"><h4>
          PDF —— 加入星球免费获取
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="http://pan.bugstack.cn/?dl=05b281eff1476e2c22eb5114ced0dc4d" target="_blank" rel="noopener noreferrer" class="nav-link external">
  免费《字节码编程手册》(密码：Rlxbh1ia)
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="http://pan.bugstack.cn/?dl=431e114a26f810655d29b6dea54a680f" target="_blank" rel="noopener noreferrer" class="nav-link external">
  免费《重学Java设计模式》——旧版PDF(密码：FWchEAF6)
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="http://pan.bugstack.cn/?dl=dbed614f318bf9fc9d3b034ba9502a3c" target="_blank" rel="noopener noreferrer" class="nav-link external">
  免费《倚天村 • 图解数据结构》(密码：0SjbAlPa)
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="https://download.csdn.net/download/Yao__Shun__Yu/14932325" target="_blank" rel="noopener noreferrer" class="nav-link external">
  付费《Java 面经手册》
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-subitem"><a href="https://download.csdn.net/download/Yao__Shun__Yu/77484299" target="_blank" rel="noopener noreferrer" class="nav-link external">
  付费《IDEA Plugin 开发手册》
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></li><li class="dropdown-item"><h4>
          插件
        </h4> <ul class="dropdown-subitem-wrapper"><li class="dropdown-subitem"><a href="../../product/idea-plugin/vo2dto.html" class="nav-link">
  💱 IDEA Plugin vo2dto —— 对象转换插件
</a></li></ul></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="关于" class="dropdown-title"><span class="title">关于</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="../../about/me/about-me.html" class="nav-link">
  关于自己
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/about/study/2020-04-30-%E7%92%81%E6%9F%A5%E4%BA%BE%E9%90%9E%E5%97%AD%E7%B4%9D%E9%8D%99%EE%81%87%EE%9B%A6%E6%B5%A3%E7%8A%B3%E6%A7%B8%E6%B6%93%E2%82%AC%E6%B6%93%EE%81%86%E5%9F%8D%E9%8E%B6%E6%A8%BF%E5%90%98%E9%90%A8%E5%8B%AD%E2%96%BC%E6%90%B4%E5%BF%93%E6%86%B3%E9%94%9B%E5%B1%BE%E7%98%AF%E6%B6%93%E6%B0%AD%E5%A3%98%E5%AE%B8%E3%83%A4%E7%B6%94%E9%90%AA%E7%86%BA%E6%AE%91%E6%B6%93%E5%B6%89%E6%B8%B6%E7%91%95%E4%BD%B8%E5%95%80%E9%91%BA%E9%81%8D%E6%8C%B6%E9%8D%A9%E7%A1%85%EE%86%84.html" class="nav-link">
  关于学习
</a></li><li class="dropdown-item"><!----> <a href="https://www.bugstack.cn/md/about/job/2020-04-11-%E5%AE%B8%E3%83%A4%E7%B6%94%E6%B6%93%E3%82%85%E5%8B%BE%E7%BB%A0%E2%82%AC%E9%8D%98%E5%97%97%E5%95%93%E9%8E%B4%E6%84%AF%E7%B9%96%E9%8F%8D%E5%87%A4%E7%B4%9D%E7%92%8B%E4%BD%BD%EE%9B%A6%E6%B5%A3%E7%8A%B2%E6%86%96%E9%94%9B%81.html" class="nav-link">
  关于职场
</a></li></ul></div></div><div class="nav-item"><a href="https://space.bilibili.com/15637440" target="_blank" rel="noopener noreferrer" class="nav-link external">
  B站
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="源码" class="dropdown-title"><span class="title">源码</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="https://github.com/fuzhengwei" target="_blank" rel="noopener noreferrer" class="nav-link external">
  开源项目 - Github
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://gitcode.net/fuzhengwei" target="_blank" rel="noopener noreferrer" class="nav-link external">
  开源项目 - Gitcode
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li><li class="dropdown-item"><!----> <a href="https://gitcode.net/KnowledgePlanet" target="_blank" rel="noopener noreferrer" class="nav-link external">
  付费项目 - Gitcode
  <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div></div> <!----></nav>  <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>介绍</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="data-structures.html" class="sidebar-link">《倚天村 • 图解数据结构》</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>线性数据结构</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="2022-07-22-linked-list.html" class="sidebar-link">链表 Link List</a></li><li><a href="2022-07-30-array-list.html" class="sidebar-link">数组 Array</a></li><li><a href="2022-08-06-queue.html" class="sidebar-link">队列 Queue</a></li><li><a href="2022-08-17-stack.html" aria-current="page" class="active sidebar-link">堆栈（栈）Stack</a></li><li><a href="2022-08-27-hash-table.html" class="sidebar-link">哈希表(散列) Hash</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>树形数据结构</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="2022-09-03-heap.html" class="sidebar-link">堆 Heap - 最小堆&amp;最大堆</a></li><li><a href="2022-09-14-trie.html" class="sidebar-link">字典树 Trie</a></li><li><a href="2022-09-18-tree.html" class="sidebar-link">二分搜索树 Binary Search Tree</a></li><li><a href="2022-09-26-tree-avl.html" class="sidebar-link">平衡二叉树 AVL Tree</a></li><li><a href="2022-10-01-tree-2-3.html" class="sidebar-link">2-3树</a></li><li><a href="2022-10-02-tree-red-black.html" class="sidebar-link">红黑树 Red Back Tree</a></li><li><a href="2022-10-04-disjoint-set.html" class="sidebar-link">并查集 Disjoint-Set</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>图论</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="2022-10-03-graph.html" class="sidebar-link">图 Graph</a></li></ul></section></li><li><section class="sidebar-group depth-0"><p class="sidebar-heading"><span>其他</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="2022-10-05-bloom-filter.html" class="sidebar-link">布隆过滤器 Bloom Filter</a></li></ul></section></li></ul> </aside> <div><main class="page"> <div class="theme-default-content content__default"><h1 id="数据结构-堆栈-栈-stack"><a href="2022-08-17-stack.html#数据结构-堆栈-栈-stack" class="header-anchor">#</a> 数据结构：堆栈（栈）Stack</h1> <p>作者：小傅哥
<br>博客：<a href="../../zsxq/material/定时任务执行时间的逐步衰减" target="_blank" rel="noopener noreferrer">https://bugstack.cn<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> <br>原文：<a href="https://mp.weixin.qq.com/s/gyy8_mwI66FRIGJ9zgrUmA" target="_blank" rel="noopener noreferrer">https://mp.weixin.qq.com/s/gyy8_mwI66FRIGJ9zgrUmA<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <blockquote><p>沉淀、分享、成长，让自己和他人都能有所收获！😄</p></blockquote> <h2 id="一、前言"><a href="2022-08-17-stack.html#一、前言" class="header-anchor">#</a> 一、前言</h2> <p><code>堆栈的历史</code></p> <p>堆栈于 1946 年进入计算机科学文献，当时当时 Alan M. Turing 使用术语“bury”和“unbury”作为调用子程序和从子程序返回的一种方式。1945 年， Konrad Zuse 的 Z4 中已经实现了子程序。</p> <p>慕尼黑工业大学的 Klaus Samelson 和 Friedrich L. Bauer 在 1955 年提出了堆栈的想法，并于 1957 年申请了专利。1988 年 3 月，其中在萨梅尔森去世时，鲍尔因发明堆栈原理而获得了 IEEE 计算机先锋奖。Charles Leonard Hamblin 在 1954 年上半年和Wilhelm Kämmerer  [ de ] 在 1958 年独立开发了类似的概念。</p> <h2 id="二、堆栈数据结构"><a href="2022-08-17-stack.html#二、堆栈数据结构" class="header-anchor">#</a> 二、堆栈数据结构</h2> <p>在计算机科学中，堆栈是一种抽象数据类型，用作元素的集合，具有两个主要的操作；</p> <ul><li>PUSH：将元素添加到集合</li> <li>POP：删除最近添加但尚未删除的元素</li></ul> <div align="center"><img src="https://bugstack.cn/images/article/algorithm/algorithms-220817-01.png?raw=true" width="500px"></div> <p>堆栈是一种 LIFO（后进先出）的线性的数据结构，或者更抽象说是一种顺序集合，push 和 pop 操作只发生在结构的一端，称为栈顶。这种结构可以很容易地从堆栈顶部取出一个项目，而要到达堆栈更深处的一个项目可能需要先取出多个其他项目。例如；我们经常看到的浏览器访问记录，总是把最近记录展示给你。还包括：一摞书、一叠盘子、一脑瓜子生活琐事。</p> <ul><li>源码地址：<a href="https://github.com/fuzhengwei/java-algorithms" target="_blank" rel="noopener noreferrer">https://github.com/fuzhengwei/java-algorithms<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> - <code>Java 算法与数据结构</code></li> <li>本章源码：<a href="https://github.com/fuzhengwei/java-algorithms/tree/main/data-structures/src/main/java/stack" target="_blank" rel="noopener noreferrer">https://github.com/fuzhengwei/java-algorithms/tree/main/data-structures/src/main/java/stack<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul> <h2 id="三、实现堆栈结构"><a href="2022-08-17-stack.html#三、实现堆栈结构" class="header-anchor">#</a> 三、实现堆栈结构</h2> <p>当你真的有场景需要使用后进先出堆栈时，一定是不能使用 Java 提供的 Stack 的。因为这个工具类是在 JDK 1.0 阶段开发的，实现的特别粗糙，包括像 synchronized 锁也是直接加到方法上。同时 JDK Stack 类的注解也提醒，使用 ArrayDeque 替代；</p> <div align="center"><img src="https://bugstack.cn/images/article/algorithm/algorithms-220817-02.png?raw=true" width="700px"></div> <ul><li>Deque 接口及其实现提供了一组更完整和一致的 LIFO 堆栈操作，应优先使用此类。所以我们本章也是以 ArrayDeque 为原型做代码实现。</li> <li>当小傅哥去翻看 ArrayDeque 时，发现这又是 Doug Lea 老爷子的作品，只要有这大神的存在，这份代码一定很多骚操作！</li></ul> <h3 id="_1-arraydeque-介绍"><a href="2022-08-17-stack.html#_1-arraydeque-介绍" class="header-anchor">#</a> 1.  ArrayDeque 介绍</h3> <p>ArrayDeque 是一个基于数组实现的堆栈数据结构，在数据存放时元素通过二进制与运算获取对应的索引存放元素。当数组长度超过初始空间后，进行2的n次幂左移一位扩容，并将数组内容的元素按照分半分别进行迁移。<em>这块逻辑多一些，接下来的内容会以此进行讲解，同时在学习过程中可以在小傅哥提供的源码中完成断点调试，方便快速掌握。</em></p> <div align="center"><img src="https://bugstack.cn/images/article/algorithm/algorithms-220817-03.png?raw=true" width="600px"></div> <ul><li>堆栈的数据结构是以2的次幂进行初始化，扩容时候为2的倍数。它之所这样是因为保证了在后续计算元素索引位置时，可以进行与运算。也就说 2的n次幂-1 得到的值是一个011111的范围，在与元素索引位置计算时候，找到两个值之间1的位置即可。</li> <li>数据的压栈，压栈是一个在数组中倒放的方式，通过与运算得到索引值。当发生空间不足时扩容迁移数据，会有2次操作。一次是空间的前半段复制，另外一次是后半段复制。</li> <li>最后在数据弹出时，按照空间的元素数量总数开始，同样通过与运算计算索引值。分为弹出队列中未发生迁移的数据，和已经完全迁移好的数据。<em>凡是迁移的数据，都是保证了一个顺序。</em></li> <li>综上你可能还不是很理解这个数据结构的精妙设计和使用，接下来小傅哥再带着你从代码实现的角度来看下。</li></ul> <h3 id="_2-添加元素"><a href="2022-08-17-stack.html#_2-添加元素" class="header-anchor">#</a> 2. 添加元素</h3> <p><strong>源码详见</strong>：<code>cn.bugstack.algorithms.data.stack.ArrayDeque#push</code></p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">push</span><span class="token punctuation">(</span><span class="token class-name">E</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span>e <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span>
        <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">NullPointerException</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    elements<span class="token punctuation">[</span>head <span class="token operator">=</span> <span class="token punctuation">(</span>head <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> <span class="token punctuation">(</span>elements<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">]</span> <span class="token operator">=</span> e<span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;push.idx head：{}&quot;</span><span class="token punctuation">,</span> head<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span>head <span class="token operator">==</span> tail<span class="token punctuation">)</span>
        <span class="token function">doubleCapacity</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><div align="center"><img src="https://bugstack.cn/images/article/algorithm/algorithms-220817-04.png?raw=true" width="600px"></div> <ul><li>push 元素的过程相当于找到初始化数组长度的队尾，另外是扩容后从新的队尾开始依次添加元素。此时不用担心元素的输出，因为输出时是从扩容起始点开始输出元素。</li></ul> <h3 id="_3-扩容空间"><a href="2022-08-17-stack.html#_3-扩容空间" class="header-anchor">#</a> 3. 扩容空间</h3> <p><strong>源码详见</strong>：<code>cn.bugstack.algorithms.data.stack.ArrayDeque#doubleCapacity</code></p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">private</span> <span class="token keyword">void</span> <span class="token function">doubleCapacity</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">assert</span> head <span class="token operator">==</span> tail<span class="token punctuation">;</span>
    <span class="token keyword">int</span> p <span class="token operator">=</span> head<span class="token punctuation">;</span>
    <span class="token keyword">int</span> n <span class="token operator">=</span> elements<span class="token punctuation">.</span>length<span class="token punctuation">;</span>
    <span class="token keyword">int</span> r <span class="token operator">=</span> n <span class="token operator">-</span> p<span class="token punctuation">;</span>
    <span class="token keyword">int</span> newCapacity <span class="token operator">=</span> n <span class="token operator">&lt;&lt;</span> <span class="token number">1</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span>newCapacity <span class="token operator">&lt;</span> <span class="token number">0</span><span class="token punctuation">)</span>
        <span class="token keyword">throw</span> <span class="token keyword">new</span> <span class="token class-name">IllegalStateException</span><span class="token punctuation">(</span><span class="token string">&quot;Sorry, deque too big&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token class-name">Object</span><span class="token punctuation">[</span><span class="token punctuation">]</span> a <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Object</span><span class="token punctuation">[</span>newCapacity<span class="token punctuation">]</span><span class="token punctuation">;</span>
    <span class="token comment">/*
     * src      - 源数组
     * srcPos   – 源数组中的起始位置
     * dest     - 目标数组
     * destPos  – 目标数据中的起始位置
     * length   – 要复制的数组元素的数量
     */</span>
    <span class="token comment">// 第一次拷贝元素：[2、1、4、3] 将数组中的扩容后一半元素拷贝到新数组0开始往后的位置。拷贝4、3</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span><span class="token function">arraycopy</span><span class="token punctuation">(</span>elements<span class="token punctuation">,</span> p<span class="token punctuation">,</span> a<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> r<span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token comment">// 第二次拷贝元素：[2、1、4、3] 将数组中的前面一半数量的元素，拷贝到新数组后一半开始的位置往后。拷贝2、1</span>
    <span class="token class-name">System</span><span class="token punctuation">.</span><span class="token function">arraycopy</span><span class="token punctuation">(</span>elements<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> a<span class="token punctuation">,</span> r<span class="token punctuation">,</span> p<span class="token punctuation">)</span><span class="token punctuation">;</span>
    elements <span class="token operator">=</span> a<span class="token punctuation">;</span>
    head <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">;</span>
    tail <span class="token operator">=</span> n<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br></div></div><div align="center"><img src="https://bugstack.cn/images/article/algorithm/algorithms-220817-05.png?raw=true" width="600px"></div> <ul><li>空间扩容以2的倍数进行操作，以此保证2的幂等。</li> <li>System.arraycopy 是操作数据迁移的本地方法，从源数组的某个指定位置，把元素迁移到新数组的指定位置和指定个数个元素。</li> <li>另外是数据迁移，以 [2、1、4、3] 举例；
<ul><li>第一次拷贝元素：[2、1、4、3] 将数组中的扩容后一半元素拷贝到新数组0开始往后的位置。拷贝4、3</li> <li>第二次拷贝元素：[2、1、4、3] 将数组中的前面一半数量的元素，拷贝到新数组后一半开始的位置往后。拷贝2、1</li></ul></li></ul> <h3 id="_4-弹出元素"><a href="2022-08-17-stack.html#_4-弹出元素" class="header-anchor">#</a> 4. 弹出元素</h3> <p><strong>源码详见</strong>：<code>cn.bugstack.algorithms.data.stack.ArrayDeque#pop</code></p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token keyword">public</span> <span class="token class-name">E</span> <span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">int</span> h <span class="token operator">=</span> head<span class="token punctuation">;</span>
    <span class="token annotation punctuation">@SuppressWarnings</span><span class="token punctuation">(</span><span class="token string">&quot;unchecked&quot;</span><span class="token punctuation">)</span>
    <span class="token class-name">E</span> result <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token class-name">E</span><span class="token punctuation">)</span> elements<span class="token punctuation">[</span>h<span class="token punctuation">]</span><span class="token punctuation">;</span>
    <span class="token keyword">if</span> <span class="token punctuation">(</span>result <span class="token operator">==</span> <span class="token keyword">null</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
        <span class="token keyword">return</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
    elements<span class="token punctuation">[</span>h<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
    head <span class="token operator">=</span> <span class="token punctuation">(</span>h <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">&amp;</span> <span class="token punctuation">(</span>elements<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;pop.idx {} = {} &amp; {}&quot;</span><span class="token punctuation">,</span> head<span class="token punctuation">,</span> <span class="token class-name">Integer</span><span class="token punctuation">.</span><span class="token function">toBinaryString</span><span class="token punctuation">(</span>h <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token class-name">Integer</span><span class="token punctuation">.</span><span class="token function">toBinaryString</span><span class="token punctuation">(</span>elements<span class="token punctuation">.</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">return</span> result<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br></div></div><div align="center"><img src="https://bugstack.cn/images/article/algorithm/algorithms-220817-06.png?raw=true" width="600px"></div> <ul><li>按照索引的计算，以此是弹出索引为：6、7、0、1、2、3、4 对应的元素。head 的值从扩容的长度添加元素后逐步减小，所以当前最开始弹出的元素是6索引对应的值。<em>读者可以尝试在添加一个元素，进行验证</em></li></ul> <h2 id="四、堆栈功能测试"><a href="2022-08-17-stack.html#四、堆栈功能测试" class="header-anchor">#</a> 四、堆栈功能测试</h2> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">test_stack</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token class-name">Deque</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token class-name">Integer</span><span class="token punctuation">&gt;</span></span> deque <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayDeque</span><span class="token generics"><span class="token punctuation">&lt;</span><span class="token punctuation">&gt;</span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">6</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    deque<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">7</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;弹出元素：{}&quot;</span><span class="token punctuation">,</span> deque<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;弹出元素：{}&quot;</span><span class="token punctuation">,</span> deque<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;弹出元素：{}&quot;</span><span class="token punctuation">,</span> deque<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;弹出元素：{}&quot;</span><span class="token punctuation">,</span> deque<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;弹出元素：{}&quot;</span><span class="token punctuation">,</span> deque<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    logger<span class="token punctuation">.</span><span class="token function">info</span><span class="token punctuation">(</span><span class="token string">&quot;弹出元素：{}&quot;</span><span class="token punctuation">,</span> deque<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br></div></div><p><strong>测试结果</strong></p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.407</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">1</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.412</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">0</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.412</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">3</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.412</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">2</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">7</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">6</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> push<span class="token punctuation">.</span>idx head：<span class="token number">5</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> pop<span class="token punctuation">.</span>idx <span class="token number">6</span> <span class="token operator">=</span> <span class="token number">110</span> <span class="token operator">&amp;</span> <span class="token number">111</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>test<span class="token punctuation">.</span></span>AlgorithmsTest</span> <span class="token operator">-</span> 弹出元素：<span class="token number">7</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> pop<span class="token punctuation">.</span>idx <span class="token number">7</span> <span class="token operator">=</span> <span class="token number">111</span> <span class="token operator">&amp;</span> <span class="token number">111</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>test<span class="token punctuation">.</span></span>AlgorithmsTest</span> <span class="token operator">-</span> 弹出元素：<span class="token number">6</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> pop<span class="token punctuation">.</span>idx <span class="token number">0</span> <span class="token operator">=</span> <span class="token number">1000</span> <span class="token operator">&amp;</span> <span class="token number">111</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>test<span class="token punctuation">.</span></span>AlgorithmsTest</span> <span class="token operator">-</span> 弹出元素：<span class="token number">5</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> pop<span class="token punctuation">.</span>idx <span class="token number">1</span> <span class="token operator">=</span> <span class="token number">1</span> <span class="token operator">&amp;</span> <span class="token number">111</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>test<span class="token punctuation">.</span></span>AlgorithmsTest</span> <span class="token operator">-</span> 弹出元素：<span class="token number">4</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> pop<span class="token punctuation">.</span>idx <span class="token number">2</span> <span class="token operator">=</span> <span class="token number">10</span> <span class="token operator">&amp;</span> <span class="token number">111</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>test<span class="token punctuation">.</span></span>AlgorithmsTest</span> <span class="token operator">-</span> 弹出元素：<span class="token number">3</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>data<span class="token punctuation">.</span>stack<span class="token punctuation">.</span></span>ArrayDeque</span> <span class="token operator">-</span> pop<span class="token punctuation">.</span>idx <span class="token number">3</span> <span class="token operator">=</span> <span class="token number">11</span> <span class="token operator">&amp;</span> <span class="token number">111</span>
<span class="token number">07</span><span class="token operator">:</span><span class="token number">09</span><span class="token operator">:</span><span class="token number">49.413</span> <span class="token punctuation">[</span>main<span class="token punctuation">]</span> INFO <span class="token class-name"><span class="token namespace">cn<span class="token punctuation">.</span>bugstack<span class="token punctuation">.</span>algorithms<span class="token punctuation">.</span>test<span class="token punctuation">.</span></span>AlgorithmsTest</span> <span class="token operator">-</span> 弹出元素：<span class="token number">2</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div><ul><li>从测试结果中可以看到小傅哥添加的日志，打印出所应的添加元素、弹出元素的过程。读者在学习的过程中也可以添加一些额外的日志信息。</li> <li><code>Integer.toBinaryString()</code> 是一个用于打印二进制结果的操作，方便查看二进制的计算。</li></ul> <h2 id="五、常见面试问题"><a href="2022-08-17-stack.html#五、常见面试问题" class="header-anchor">#</a> 五、常见面试问题</h2> <ul><li>堆栈的使用场景？</li> <li>为什么不是用 Stack 类？</li> <li>ArrayDeque 是基于什么实现的？</li> <li>ArrayDeque 数据结构使用过程叙述。</li> <li>ArrayDeque 为什么要初始化2的n次幂个长度？</li></ul> <h2 id="六、优秀作业"><a href="2022-08-17-stack.html#六、优秀作业" class="header-anchor">#</a> 六、优秀作业</h2> <ul><li><a href="https://t.zsxq.com/06JeMzrFa" target="_blank" rel="noopener noreferrer">教科书级别栈的数据结构图稿梳理 @Chin<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/fuzhengwei/CodeGuide/edit/master/docs/md/algorithm/data-structures/2022-08-17-stack.md" target="_blank" rel="noopener noreferrer">在 GitHub 上编辑此页</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">上次更新: </span> <span class="time">2023/9/1</span></div></footer> <div class="page-nav"><p class="inner"><span class="prev">
        ←
        <a href="2022-08-06-queue.html" class="prev">
          队列 Queue
        </a></span> <span class="next"><a href="2022-08-27-hash-table.html">
          哈希表(散列) Hash
        </a>
        →
      </span></p></div> </main></div> <aside class="page-sidebar"> <div class="page-side-toolbar"><div class="option-box-toc-fixed"><div class="toc-container-sidebar"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="max-height:650px"><div style="font-weight:bold;text-align:center;">堆栈（栈）Stack</div> <hr> <div class="toc-box"><ul class="toc-sidebar-links"><li><a href="2022-08-17-stack.html#一、前言" class="toc-sidebar-link">一、前言</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#二、堆栈数据结构" class="toc-sidebar-link">二、堆栈数据结构</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#三、实现堆栈结构" class="toc-sidebar-link">三、实现堆栈结构</a><ul class="toc-sidebar-sub-headers"><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_1-arraydeque-介绍" class="toc-sidebar-link">1.  ArrayDeque 介绍</a></li><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_2-添加元素" class="toc-sidebar-link">2. 添加元素</a></li><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_3-扩容空间" class="toc-sidebar-link">3. 扩容空间</a></li><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_4-弹出元素" class="toc-sidebar-link">4. 弹出元素</a></li></ul></li><li><a href="2022-08-17-stack.html#四、堆栈功能测试" class="toc-sidebar-link">四、堆栈功能测试</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#五、常见面试问题" class="toc-sidebar-link">五、常见面试问题</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#六、优秀作业" class="toc-sidebar-link">六、优秀作业</a><ul class="toc-sidebar-sub-headers"></ul></li></ul></div></div></div></div></div> <div class="option-box-toc-over"><img src="../../../images/system/toc.png" class="nozoom"> <span class="show-txt">目录</span> <div class="toc-container"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="max-height:550px"><div style="font-weight:bold;text-align:center;">堆栈（栈）Stack</div> <hr> <div class="toc-box"><ul class="toc-sidebar-links"><li><a href="2022-08-17-stack.html#一、前言" class="toc-sidebar-link">一、前言</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#二、堆栈数据结构" class="toc-sidebar-link">二、堆栈数据结构</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#三、实现堆栈结构" class="toc-sidebar-link">三、实现堆栈结构</a><ul class="toc-sidebar-sub-headers"><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_1-arraydeque-介绍" class="toc-sidebar-link">1.  ArrayDeque 介绍</a></li><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_2-添加元素" class="toc-sidebar-link">2. 添加元素</a></li><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_3-扩容空间" class="toc-sidebar-link">3. 扩容空间</a></li><li class="toc-sidebar-sub-header"><a href="2022-08-17-stack.html#_4-弹出元素" class="toc-sidebar-link">4. 弹出元素</a></li></ul></li><li><a href="2022-08-17-stack.html#四、堆栈功能测试" class="toc-sidebar-link">四、堆栈功能测试</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#五、常见面试问题" class="toc-sidebar-link">五、常见面试问题</a><ul class="toc-sidebar-sub-headers"></ul></li><li><a href="2022-08-17-stack.html#六、优秀作业" class="toc-sidebar-link">六、优秀作业</a><ul class="toc-sidebar-sub-headers"></ul></li></ul></div></div></div></div></div> <div class="option-box"><img src="../../../images/system/wechat.png" class="nozoom"> <span class="show-txt">手机看</span> <div class="toc-container"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="text-align:center"><span style="font-size:0.9rem">微信扫一扫</span> <img height="180px" src="https://api.qrserver.com/v1/create-qr-code/?data=https://bugstack.cn/md/algorithm/data-structures/2022-08-17-stack.html" style="margin:10px;">
                可以<b>手机看</b>或分享至<b>朋友圈</b></div></div></div></div> <div class="option-box"><img src="../../../images/system/toggle.png" width="30px" class="nozoom"> <span class="show-txt">左栏</span></div> <div onclick="javascript:window.open('https://wx.zsxq.com/dweb2/index/group/48411118851818','_blank')" class="option-box"><img src="../../../images/system/xingqiu.png" width="25px" class="nozoom"> <span class="show-txt">星球</span> <div class="toc-container"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="text-align:center"><span style="font-size:0.8rem;font-weight:bold;">实战项目<span style="font-size:8px;color:red;">「DDD+RPC分布式抽奖系统」</span>、专属小册、问题解答、简历指导、架构图稿、视频课程</span> <img height="180px" src="../../../images/personal/xingqiu.png" style="margin:10px;"> <b>知识星球</b>：码农会锁
            </div></div></div></div> <div class="option-box"><img src="../../../images/system/wexin4.png" width="25px" class="nozoom"> <span class="show-txt">读者群</span> <div class="toc-container"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="text-align:center"><span style="font-size:0.8rem;font-weight:bold;">添加小傅哥微信<span style="color:red;">(fustack)</span>进虫洞栈学习交流圈「无任何套路」</span> <img src="../../../images/personal/fustack.png" height="180px" style="margin:10px;">
                PS：添加时请备注<b>读者加群</b>，谢谢！
              </div></div></div></div> <div class="option-box"><img src="../../../images/system/download-2.png" width="25px" class="nozoom"> <span class="show-txt">下资料</span> <div class="toc-container"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="text-align:center"><span style="font-size:0.8rem;font-weight:bold;">扫描公众号，回复<span style="color:red;">“1024”</span>下载<span style="color:red;">100GB+</span>大学到毕业分阶段学习技术资料、PDF书籍、实战项目、简历模板等「无任何套路」</span> <img src="../../../images/personal/qrcode.png" height="180px" style="margin:10px;"> <b>公众号:</b> bugstack虫洞栈
              </div></div></div></div> <div onclick="javascript:window.open('https://t.zsxq.com/17UIvdgb3','_blank')" class="option-box"><img src="../../../images/system/interview.png" width="25px" class="nozoom"> <span class="show-txt">八股文</span></div> <div title="队列 Queue" class="option-box" style="padding-left:2px;text-align:center;"><a href="2022-08-06-queue.html"><img src="../../../images/system/pre2.png" width="30px" class="nozoom"> <span class="show-txt">上一篇</span></a></div> <div title="哈希表(散列) Hash" class="option-box" style="padding-left:2px;text-align:center;"><a href="2022-08-27-hash-table.html"><img src="../../../images/system/next2.png" width="30px" class="nozoom"> <span class="show-txt">下一篇</span></a></div></div>  <div class="page-side-sitemap"><div class="option-box"><img src="../../../images/system/sitemap.png" class="nozoom img"> <span class="show-txt">站点图</span> <div class="sitemap-container"><h4>站点导航图
              <a href="https://www.bugstack.cn/md/about/me/2020-08-25-13%E9%AA%9E%E5%AD%98%E7%98%AF%E6%B6%93%E6%B0%BE%E7%B4%9D%E9%90%A2%E3%84%A4%E8%A2%B1%E9%AA%9E%E5%AD%98%E6%A4%82%E9%97%82%E7%BF%A0%E7%B2%A0%E6%BE%B6%E6%A0%A7%E5%AF%98%E7%92%A7%E6%8B%8C%E7%B9%98%E6%B5%9C%E6%8E%95%E4%BB%88%E7%BC%83%E6%88%9D%E3%81%87%E9%8D%98%82.html" class="sitemap-top-link"> 关于我</a> <a href="https://www.bugstack.cn/md/about/study/2020-04-30-%E7%92%81%E6%9F%A5%E4%BA%BE%E9%90%9E%E5%97%AD%E7%B4%9D%E9%8D%99%EE%81%87%EE%9B%A6%E6%B5%A3%E7%8A%B3%E6%A7%B8%E6%B6%93%E2%82%AC%E6%B6%93%EE%81%86%E5%9F%8D%E9%8E%B6%E6%A8%BF%E5%90%98%E9%90%A8%E5%8B%AD%E2%96%BC%E6%90%B4%E5%BF%93%E6%86%B3%E9%94%9B%E5%B1%BE%E7%98%AF%E6%B6%93%E6%B0%AD%E5%A3%98%E5%AE%B8%E3%83%A4%E7%B6%94%E9%90%AA%E7%86%BA%E6%AE%91%E6%B6%93%E5%B6%89%E6%B8%B6%E7%91%95%E4%BD%B8%E5%95%80%E9%91%BA%E9%81%8D%E6%8C%B6%E9%8D%A9%E7%A1%85%EE%86%84.html" class="sitemap-top-link"> 关于学习</a> <a href="https://www.bugstack.cn/md/about/job/2020-11-15-BATJTMD%E9%94%9B%E5%B1%BD%E3%81%87%E9%8D%98%E5%82%9B%E5%AB%91%E9%91%B1%E6%A9%88%E7%B4%9D%E9%96%AE%E8%8A%A5%E5%AB%91%E6%B5%A0%E2%82%AC%E6%B6%94%E5%A0%9F%E7%89%B1Java%E7%BB%8B%E5%AC%AA%E7%B0%AD%E9%8D%9B%E6%A9%88%E7%B4%B5.html" class="sitemap-top-link"> 关于职场</a></h4> <table class="sitemap-table"><tr><td nowrap="nowrap"><div class="sitemap-col-group">常用搜索</div></td> <td><div class="sitemap-col-item"><a href="http://www.baidu.com/" target="_blank" title="百度">  
          百度
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="http://www.google.com/" target="_blank" title="Google">  
          Google
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="http://www.bing.com/" target="_blank" title="Bing">  
          Bing
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://github.com" target="_blank" title="Github">  
          Github
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://www.programcreek.com/java-api-examples/index.php" target="_blank" title="搜代码">  
          搜代码
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></td> <!----></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">技术社区</div></td> <td><div class="sitemap-col-item"><a href="http://www.csdn.net/" target="_blank" title="CDSN">  
          CDSN
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="http://www.cnblogs.com/" target="_blank" title="博客园">  
          博客园
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://www.oschina.net" target="_blank" title="OSChina">  
          OSChina
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://segmentfault.com/" target="_blank" title="思否">  
          思否
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://juejin.im" target="_blank" title="掘金">  
          掘金
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://www.linuxidc.com/" target="_blank" title="Linux公社">  
          Linux公社
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://www.ibm.com/developerworks/cn/" target="_blank" title="IBM 开发者">  
          IBM 开发者
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://stackoverflow.com" target="_blank" title="StackOverflow">  
          StackOverflow
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></td> <!----></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">PDF 下载</div></td> <td><div class="sitemap-col-item"><a href="https://download.csdn.net/download/Yao__Shun__Yu/14932325" target="_blank" title="《Java 面经手册》">  
          《Java 面经手册》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://download.csdn.net/download/Yao__Shun__Yu/19265731" target="_blank" title="《重学Java设计模式》">  
          《重学Java设计模式》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://download.csdn.net/download/Yao__Shun__Yu/21009038" target="_blank" title="《手撸 Spring》">  
          《手撸 Spring》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://download.csdn.net/download/Yao__Shun__Yu/12505051" target="_blank" title="《字节码编程》">  
          《字节码编程》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></td> <!----></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">面试求职</div></td> <!----> <td><a href="https://www.bugstack.cn/md/about/job/2020-04-11-%E5%AE%B8%E3%83%A4%E7%B6%94%E6%B6%93%E3%82%85%E5%8B%BE%E7%BB%A0%E2%82%AC%E9%8D%98%E5%97%97%E5%95%93%E9%8E%B4%E6%84%AF%E7%B9%96%E9%8F%8D%E5%87%A4%E7%B4%9D%E7%92%8B%E4%BD%BD%EE%9B%A6%E6%B5%A3%E7%8A%B2%E6%86%96%E9%94%9B%81.html" class="sitemap-col-item">
          简历优化
        </a><a href="https://www.bugstack.cn/md/about/job/2021-02-24-%E9%8D%97%E5%A9%82%E5%8B%BE%E7%BB%9B%E6%B6%A2%E2%82%AC%E5%A4%89%E7%B0%A1400+%E6%B5%A0%E7%95%8C%E7%95%9D%E9%8D%98%E5%97%AD%E7%B4%9D%E9%8D%9B%E5%A9%85%E7%98%94%E6%B5%A3%E7%8A%B3%E2%82%AC%E5%BA%9D%E7%AE%9E%E9%8D%90%E6%AC%8E%E7%B4%B0%E7%90%9A%EE%82%A3%E6%8C%AC.html" class="sitemap-col-item">
          简历筛选
        </a><a href="https://www.bugstack.cn/md/about/job/2020-11-15-BATJTMD%E9%94%9B%E5%B1%BD%E3%81%87%E9%8D%98%E5%82%9B%E5%AB%91%E9%91%B1%E6%A9%88%E7%B4%9D%E9%96%AE%E8%8A%A5%E5%AB%91%E6%B5%A0%E2%82%AC%E6%B6%94%E5%A0%9F%E7%89%B1Java%E7%BB%8B%E5%AC%AA%E7%B0%AD%E9%8D%9B%E6%A9%88%E7%B4%B5.html" class="sitemap-col-item">
          大厂要求
        </a><a href="https://www.bugstack.cn/md/about/job/2020-12-20-%E5%AE%B8%E3%83%A4%E7%B6%943%E9%AA%9E%E8%BE%BE%E7%B4%9D%E9%90%AA%E5%AC%AA%E6%9A%90%E7%92%A7%E5%8B%AC%E6%9E%A1%E9%91%B3%E8%8A%A5%E6%B9%80%E9%92%96%AA30K%E9%94%9B%9F.html" class="sitemap-col-item">
          薪资待遇
        </a><a href="https://www.bugstack.cn/md/about/me/2020-11-29-%E9%8D%96%E6%A5%81%E7%B4%93%E9%90%AE%E4%BD%B8%E5%95%98%E9%90%A8%E5%8B%AC%E5%9E%9C%E9%94%9B%E5%B1%BE%E5%A6%B8%E9%8D%A6%E3%84%A5%E3%81%87%E9%8D%A9%E5%BA%A1%E7%AB%B6%E6%9D%A9%E5%9B%A8%E5%9E%9A%E6%B5%9C%E5%97%97%E6%82%B2%E7%80%9B%E6%84%AA%E7%AB%B4%E9%8F%8D%E7%96%AF%E5%9E%9D%E9%8F%88%E5%B6%8F%E7%B4%9D%E9%8D%9D%E5%A0%9D%E6%90%B1%E9%8D%9D%E5%A0%9D%E6%90%B1%E9%8D%9D%E5%A0%AC%E7%B4%92.html" class="sitemap-col-item">
          北漂生活
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">Java相关</div></td> <!----> <td><a href="https://www.bugstack.cn/md/java/interview/2020-08-04-%E9%97%88%E3%88%A2%E7%B2%A1%E9%8E%B5%E5%AC%AA%E5%94%BD%20%E8%B7%AF%20%E7%BB%97%AC2%E7%BB%A1%E5%9B%A5%E2%82%AC%E5%A9%83%E6%9A%9F%E9%8E%B9%EE%86%BE%E7%B2%A8%E9%8F%8B%E5%8B%B6%E7%B4%9DHashCode%E6%B6%93%E8%BD%B0%E7%B2%88%E6%B6%94%E5%A0%9C%E5%A8%87%E9%90%A2%A831%E6%B5%A3%E6%BB%80%E8%B4%9F%E6%B6%94%E6%A8%BB%E6%9A%9F%E9%94%9B%E7%86%B4%E2%82%AC%8B.html" class="sitemap-col-item">
          数据结构和算法
        </a><a href="https://www.bugstack.cn/md/java/interview/2020-10-14-%E9%97%88%E3%88%A2%E7%B2%A1%E9%8E%B5%E5%AC%AA%E5%94%BD%20%E8%B7%AF%20%E7%BB%97%AC13%E7%BB%A1%E5%9B%A5%E2%82%AC%E5%A9%87%E6%AB%8E%E6%B5%9C%E5%92%BCDK%E9%8A%86%E4%B8%86GLIB%E9%94%9B%E5%B2%83%E7%B9%95%E9%8F%88%893%E7%BB%89%E5%B6%87%E8%A2%AB%E6%B5%A0%EF%BD%87%E6%82%8A%E9%8F%82%E7%91%B0%E7%B4%A1%E9%94%9B%E7%86%BC%E6%BD%B0%E7%92%87%E6%9B%9E%E5%BC%B5%E9%8D%97%E2%80%B2%E7%B6%87%E9%94%9B%E4%BD%B5%E2%82%AC%8B.html" class="sitemap-col-item">
          并发和锁
        </a><a href="https://www.bugstack.cn/md/java/interview/2020-11-25-%E9%97%88%E3%88%A2%E7%B2%A1%E9%8E%B5%E5%AC%AA%E5%94%BD%20%E8%B7%AF%20%E7%BB%97%AC19%E7%BB%A1%E5%9B%A5%E2%82%AC%E5%A5%A3hread.start()%20%E9%94%9B%E5%B1%BD%E7%95%A0%E9%8F%84%EE%88%9B%E2%82%AC%E5%BA%9D%E7%AE%9E%E7%92%81%E2%95%83%E5%9A%8E%E7%BB%8B%E5%AC%AA%E6%83%8E%E9%8D%94%E3%84%A7%E6%AE%91%E9%8D%9B%EE%9D%AE%E7%B4%B5%E9%8A%86%8B.html" class="sitemap-col-item">
          多线程
        </a><a href="https://www.bugstack.cn/md/java/core/2019-12-10-[%E9%8F%88%E5%A4%8C%E5%81%A3%E9%AA%9E%E8%8C%B6%E6%8F%A3]Jdk1.8%E9%8F%82%E6%89%AE%E5%A3%92%E9%8E%AC%D1%83%E7%96%84%E9%8E%B4%E6%A8%BC%E7%98%9241%E6%B6%93%EE%81%85%EE%94%8D%E6%B8%9A%8B.html" class="sitemap-col-item">
          Java8 特性
        </a><a href="https://www.bugstack.cn/md/java/interview/2020-11-25-%E9%97%88%E3%88%A2%E7%B2%A1%E9%8E%B5%E5%AC%AA%E5%94%BD%20%E8%B7%AF%20%E7%BB%97%AC19%E7%BB%A1%E5%9B%A5%E2%82%AC%E5%A5%A3hread.start()%20%E9%94%9B%E5%B1%BD%E7%95%A0%E9%8F%84%EE%88%9B%E2%82%AC%E5%BA%9D%E7%AE%9E%E7%92%81%E2%95%83%E5%9A%8E%E7%BB%8B%E5%AC%AA%E6%83%8E%E9%8D%94%E3%84%A7%E6%AE%91%E9%8D%9B%EE%9D%AE%E7%B4%B5%E9%8A%86%8B.html" class="sitemap-col-item">
          JVM 虚拟机
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">Spring</div></td> <!----> <td><a href="https://www.bugstack.cn/md/spring/develop-spring/2021-05-16-%E7%BB%97%AC1%E7%BB%94%E7%8B%85%E7%B4%B0%E5%AF%AE%E2%82%AC%E7%BB%A1%E5%9B%A6%E7%B2%99%E7%BC%81%E5%B6%8F%E7%B4%9D%E9%8E%B5%E5%AC%AA%E5%95%93Spring%E9%91%B3%E7%95%8C%E7%B2%B0%E6%B5%A3%E7%8A%B2%E7%94%AB%E9%8F%89%E3%83%A4%E7%B2%88%E6%B6%94%E5%A0%AC%E7%B4%B5.html" class="sitemap-col-item">
          手写 Spring
        </a><a href="https://www.bugstack.cn/md/spring/spring-cloud/2019-10-31-Spring%20Cloud%E9%97%86%E8%BA%B2%E2%82%AC%E5%A9%83%E2%82%AC%E7%BB%98%E6%B9%81%E6%B6%93%E2%82%AC%E9%8D%8B%E5%BF%94%EE%9B%A7%E6%9D%A9%E6%9D%BF%E6%86%A1%E7%92%87%E5%A4%89%E7%B6%98SpringCloud%E9%8F%84%EE%88%99%E7%B2%88%E6%B6%94%E5%A0%9B%E2%82%AC%8B.html" class="sitemap-col-item">
          SpringCloud 入门
        </a><a href="https://www.bugstack.cn/md/spring/source-code/2019-12-25-2019-12-25-[%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD]Mybatis%E9%8E%BA%E3%83%A5%E5%BD%9B%E5%A8%8C%E2%84%83%E6%B9%81%E7%80%B9%E7%82%B5%E5%B9%87%E7%BB%AB%E8%AE%B3%E8%B4%9F%E6%B5%A0%E2%82%AC%E6%B6%94%E5%A0%9D%E5%BD%B2%E6%B5%A0%E3%83%A6%E5%A2%BD%E7%90%9B%E5%B1%BD%EE%96%83%E9%8D%92%E7%8A%B3%E6%95%BC%E9%8F%8C%A5.html" class="sitemap-col-item">
          Mybatis 源码分析
        </a><a href="https://www.bugstack.cn/md/spring/source-code/2020-01-13-2020-01-13-[%E5%A9%A7%E6%84%AE%E7%88%9C%E9%8D%92%E5%97%98%E7%80%BD]%E9%8D%A9%E8%BD%B0%E7%B0%ACjdbc%E7%80%B9%E7%82%B5%E5%B9%87%E6%B6%93%E2%82%AC%E6%B6%93%E7%8B%A3emo%E9%90%97%E5%A0%A2%E6%AE%91Mybatis.html" class="sitemap-col-item">
          手写 Mybatis
        </a><a href="https://www.bugstack.cn/md/spring/source-code/2020-01-01-2020-01-01-[%E5%A9%A7%E6%84%AE%E7%88%9C%E7%91%99%EF%BD%86%E7%80%BD]Spring%E7%80%B9%E6%B0%AD%E6%A4%82%E6%B5%A0%E8%AF%B2%E5%A7%9FQuartz%E9%8E%B5%D1%86%EE%94%91%E9%8D%8F%E3%84%A8%E7%B9%83%E7%BB%8B%E5%AC%AB%E7%B0%AE%E9%90%AE%E4%BD%BD%D0%92%E7%92%87%BB.html" class="sitemap-col-item">
          Quartz 源码分析
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">面向对象</div></td> <!----> <td><a href="https://www.bugstack.cn/md/develop/design-pattern/2020-05-20-%E9%96%B2%E5%B6%85%EE%84%9FJava%E7%92%81%E6%8D%90%EE%85%B8%E5%A6%AF%E2%80%B3%E7%B4%A1%E9%8A%86%E5%A9%82%E7%96%84%E9%8E%B4%E6%A8%BA%E4%BC%90%E9%8D%98%E5%82%9B%E6%9F%9F%E5%A8%89%E6%9B%9F%C4%81%E5%AF%AE%E5%BF%8B%E2%82%AC%8B.html" class="sitemap-col-item">
          设计模式
        </a><a href="https://www.bugstack.cn/md/develop/framework/ddd/2019-10-15-DDD%E6%B6%93%E6%92%BB%EE%95%BD%E5%A6%97%E5%A0%9C%E7%B7%A5%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E5%9E%B5%E7%92%87%E5%97%9B%EE%95%AB%E9%8D%A9%E7%86%BC%E2%94%8D%E9%8D%94%E3%84%A8%EE%86%95%E7%92%81%EE%93%8ADD%E9%92%80%E8%97%89%E6%B9%B4%E9%8A%86%8B.html" class="sitemap-col-item">
          DDD 落地
        </a><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-02-21-%E9%8D%8F%E5%85%85%E7%B0%AC%E6%B5%A3%E5%BA%9D%E5%94%AC%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%AC%E6%AE%91%E9%8D%99%EE%88%9B%E5%AF%94%E7%BC%81%EE%85%9F%E2%82%AC%D1%82%E6%B0%A6%E6%B5%A0%E6%A8%BF%EE%86%95%E7%92%81%E2%80%B3%E6%8B%B0%E9%8D%92%E5%97%98%E7%80%BD.html" class="sitemap-col-item">
          低代码
        </a><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-02-04-%E9%8D%A9%E8%BD%B0%E7%B0%ACIDEA%E9%8E%BB%E6%8E%8D%E6%AC%A2%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%9D%E6%8B%B0%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%B9%E5%BD%83%E5%A6%97%E2%95%82%E5%A6%A7%E9%8F%88%EE%88%A4%E7%B4%9D%E7%80%B9%E7%82%B5%E5%B9%87%E9%90%AE%E6%96%BF%E5%BD%82%E6%B5%9C%E3%82%84%E7%B2%AF%E7%92%90%E3%84%A9%E5%99%BA%E9%91%B7%EE%81%84%E5%A7%A9%E9%8D%92%E5%97%98%E7%80%BD.html" class="sitemap-col-item">
          字节码插桩
        </a><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-02-28-%E5%AE%B8%E3%83%A4%E7%B6%94%E6%B6%93%E3%82%84%E7%AC%81%E9%AA%9E%E8%BE%BE%E7%B4%9D%E9%8F%81%E7%BF%A0%E7%AC%89%E9%8F%84%E5%BA%A3%E6%AB%A7%E9%8F%8B%E8%88%B5%E7%80%AF%E9%8D%A5%E9%B9%83%E5%85%98%E9%90%A2%E8%AF%B2%E6%9A%90%E9%94%9B%9F.html" class="sitemap-col-item">
          画架构图
        </a><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-07-19-%E7%92%8B%E5%86%AA%E7%88%BA%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%B9%E5%BD%83%E5%A6%97%E2%95%82%E5%A6%A7%E9%8F%88%EE%88%A4%E7%B4%9D%E9%90%A2%E3%84%A4%E7%B0%AC%E7%BB%AF%E8%8D%A4%E7%B2%BA%E9%90%A9%E6%88%9E%E5%B8%B6%E7%92%81%E6%8D%90%EE%85%B8%E9%8D%9C%E5%B1%BD%E7%96%84%E9%90%9C%B0.html" class="sitemap-col-item">
          系统监控
        </a><a href="https://www.bugstack.cn/md/develop/framework/scheme/2021-03-24-%E9%8D%92%E6%B0%B1%E4%BC%80%E6%B5%9C%E5%97%99%E6%AE%91%E6%B6%93%EE%85%9E%E5%BD%B4%E6%9D%9E%EE%84%80%E3%81%94%E7%81%8F%E8%BE%A8%E5%AA%B6%E9%94%9B%E5%B1%BC%E7%AB%B4%E6%BE%B6%D1%84%E5%B0%9D%E9%8D%8F%EE%84%80%E5%BE%83%E9%8F%80%E5%8F%A5%E7%AC%89%E6%B6%93%E5%AC%AA%E5%BC%B5%E9%8E%B7%E5%A4%B8%E7%AC%89%E7%92%A7%E9%94%8B%E6%BD%B5%E9%94%9B%81.html" class="sitemap-col-item">
          中台
        </a><a href="https://www.bugstack.cn/md/develop/standard/2020-09-14-%E6%B6%93%E2%82%AC%E5%A8%86%E2%80%B2%E5%94%AC%E9%90%AE%E4%BD%BD%E7%98%8E%E7%80%B9%E2%98%85%E7%B4%9D%E5%AE%B8%EE%86%BE%E5%81%A3%E6%9D%A9%E5%9B%A6%E7%AC%89%E6%B5%9C%E5%97%9A%E7%98%AF%E9%90%A2%E3%84%A6%E6%B9%A1%E9%94%9B%81.html" class="sitemap-col-item">
          研发规范
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">中间件&amp;插件</div></td> <!----> <td><a href="https://www.bugstack.cn/md/assembly/middleware/2019-12-07-%E9%8D%99%E6%88%9D%E7%AB%B7Jar%E9%8D%96%E5%91%AD%E5%9F%8CMaven%E6%B6%93%EE%85%9E%E3%81%8E%E6%B5%A0%E6%92%B3%E7%B0%B1%E9%94%9B%E5%B1%BC%E8%B4%9F%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%9D%E7%B4%91%E5%A9%A7%E6%84%AA%E8%85%91%E9%97%82%E7%BF%A0%E6%AC%A2%E9%8D%8B%E6%B0%AC%E5%99%AF%E6%BE%B6%87.html" class="sitemap-col-item">
          Maven中央仓库
        </a><a href="https://www.bugstack.cn/md/assembly/middleware/2021-08-19-%E9%8D%A9%E8%BD%B0%E7%B0%ACHash%E9%8F%81%EF%BD%85%E5%9E%AA%E9%94%9B%E5%B1%BE%E6%9A%9F%E9%8E%B9%EE%86%BC%E7%B0%B1%E7%92%BA%EE%88%9C%E6%95%B1%E7%BC%81%E5%8B%AA%E6%AC%A2%E7%92%81%E6%8D%90%EE%85%B8.html" class="sitemap-col-item">
          数据库路由设计
        </a><a href="https://www.bugstack.cn/md/assembly/idea-plugin/2021-08-27-%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%9D%E7%9A%9F%E9%90%AE%E6%97%93%E7%B4%9DIDEA%20%E9%8E%BB%E6%8E%8D%E6%AC%A2%E9%8E%AC%E5%BA%9D%E7%AE%9E%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%AF%E7%B4%B5.html" class="sitemap-col-item">
          IDEA-Plugin
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">Netty 4.x</div></td> <!----> <td><a href="https://www.bugstack.cn/md/netty/base/2019-07-30-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E9%8D%A9%E8%99%B9%EE%94%85%E9%8D%8F%E3%83%A9%E6%A3%AC%E7%BB%A1%E5%9B%AC%E6%B5%82%E9%8A%86%E5%A9%82%E5%9E%B5%E9%8D%8F%EE%99%90avaIO%E6%B6%94%E5%AC%AE%E6%A3%ACBIO%E9%8A%86%E4%B8%AFIO%E9%8A%86%E4%B8%84IO%E7%80%B9%E7%82%B4%E5%9E%AC%E7%BC%81%E5%86%A7%E7%AF%84%E9%8A%86%8B.html" class="sitemap-col-item">
          基础入门
        </a><a href="https://www.bugstack.cn/md/netty/expand/2019-08-16-netty%E5%A6%97%E5%A0%9C%E7%B7%A5%E9%94%9B%E5%AE%AFetty4.1%E6%B6%93%EE%85%A0%E9%AA%87%E9%8E%B7%E6%92%B3%E7%9D%8D%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A5%9Betty%E6%B6%93%E5%B6%B4pringBoot%E9%8F%81%E6%9D%91%E6%82%8E%E9%8A%86%8B.html" class="sitemap-col-item">
          中级拓展
        </a><a href="https://www.bugstack.cn/md/assembly/idea-plugin/2021-08-27-%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%9D%E7%9A%9F%E9%90%AE%E6%97%93%E7%B4%9DIDEA%20%E9%8E%BB%E6%8E%8D%E6%AC%A2%E9%8E%AC%E5%BA%9D%E7%AE%9E%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%AF%E7%B4%B5.html" class="sitemap-col-item">
          高级应用
        </a><a href="https://www.bugstack.cn/md/netty/application/2019-09-01-%E9%8E%B5%E5%AC%AA%E5%95%93RPC%E5%A6%97%E5%97%98%E7%81%A6%E7%BB%97%EE%83%BF%E7%AB%B4%E7%BB%94%E7%8A%AE%E2%82%AC%E5%A9%85%E5%9A%9C%E7%80%B9%E6%B0%AB%E7%AE%9F%E9%96%B0%E5%B6%87%E7%96%86xml%E9%8A%86%8B.html" class="sitemap-col-item">
          RPC 实现
        </a><a href="https://www.bugstack.cn/md/netty/application/2021-08-17-%E7%BC%81%E6%AC%8F%EE%84%9F%E6%B6%94%E7%8A%B2%E5%A7%9E%E9%90%90%E7%91%B0%E7%96%84%E7%92%BA%E7%A2%89%E7%B4%9D%E5%AF%AE%E2%82%AC%E9%8D%99%E6%88%9C%E7%AB%B4%E6%B6%93%EE%81%84%E5%9E%8E%E7%94%AF%E5%86%A8%E7%B4%A1IM%E9%8D%97%E8%99%AB%E6%A4%82%E9%96%AB%E6%B0%AB%E4%BF%8A%E7%BB%AF%E8%8D%A4%E7%B2%BA.html" class="sitemap-col-item">
          IM 仿微信
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">字节码编程</div></td> <!----> <td><a href="https://www.bugstack.cn/md/bytecode/asm/2020-03-25-[ASM%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AA%87%E6%BF%A1%E5%82%9B%E7%81%89%E6%B5%A3%E7%8A%B2%E5%BD%A7%E9%8D%90%E6%A9%9FRUD%E9%94%9B%E5%B2%84%E5%81%85%E6%9D%A9%E6%AC%91%EE%9D%92%E9%8E%B6%E2%82%AC%E9%8F%88%EE%88%99%E7%B6%98%E5%A7%98%E6%AD%8C%E7%B9%99%E7%BA%B0%E9%A2%81%E7%AC%89%E9%8D%92%B0.html" class="sitemap-col-item">
          ASM
        </a><a href="https://www.bugstack.cn/md/bytecode/javassist/2020-04-19-%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%B6%E7%B4%9DJavassist%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A9%82%E7%86%80%E6%B5%9C%E5%B7%8Eavassist%E9%90%A8%E5%8B%AD%EE%83%87%E6%B6%93%E2%82%AC%E6%B6%93%EE%81%85%EE%94%8D%E6%B8%9A%E5%AA%93elloworld%E9%8A%86%8B.html" class="sitemap-col-item">
          Javassist
        </a><a href="https://www.bugstack.cn/md/bytecode/byte-buddy/2020-05-08-%E7%80%9B%E6%A5%84%E5%A6%AD%E9%90%AE%E4%BD%BA%E7%B4%AA%E7%BB%8B%E5%AC%B6%E7%B4%9DByte-buddy%E7%BB%A1%E5%9B%A6%E7%AB%B4%E9%8A%86%E5%A9%82%E7%86%80%E6%B5%9C%E5%B6%A3yte%20Buddy%E7%92%87%EE%85%9F%E7%A1%B6%E9%8D%92%E6%B6%98%E7%BC%93%E9%90%A8%E5%8B%AD%EE%83%87%E6%B6%93%E2%82%AC%E6%B6%93%E7%8B%A7elloWorld%E9%8A%86%8B.html" class="sitemap-col-item">
          Byte-Buddy
        </a><a href="https://www.bugstack.cn/md/bytecode/agent/2019-07-10-%E9%8D%A9%E8%BD%B0%E7%B0%ACJavaAgent%E9%90%A8%E5%8B%AB%E5%8F%8F%E9%96%BE%E6%8D%90%E7%9F%BE%E9%90%A9%E6%88%9E%E5%B8%B6%E6%B6%93%E2%82%AC%E9%8A%86%E5%A9%82%E6%A3%AC%E9%94%9B%E4%B8%A3avaAgent%E9%8A%86%8B.html" class="sitemap-col-item">
          JavaAgent
        </a><a href="https://www.bugstack.cn/md/bytecode/asm-document/1%E5%AF%AE%E6%9B%A1%E2%96%88.html" class="sitemap-col-item">
          ASM-DOC
        </a><a href="https://www.bugstack.cn/md/bytecode/asm-document/JVM-%E9%8E%B8%E5%9B%A6%E6%8A%A4%E7%90%9B%A8.html" class="sitemap-col-item">
          JVM 指令码
        </a></td></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">专栏小册</div></td> <td><div class="sitemap-col-item"><a href="https://blog.csdn.net/generalfu/category_10400631.html" target="_blank" title="《Netty+JavaFx实战：仿桌面版微信聊天》">  
          《Netty+JavaFx实战：仿桌面版微信聊天》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://juejin.cn/book/6940996508632219689" target="_blank" title="《SpringBoot 中间件设计和开发》">  
          《SpringBoot 中间件设计和开发》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://t.zsxq.com/jAi2nUf" target="_blank" title="《Lottery 抽奖系统 - 基于领域驱动设计的四层架构实践》">  
          《Lottery 抽奖系统 - 基于领域驱动设计的四层架构实践》
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></td> <!----></tr><tr><td nowrap="nowrap"><div class="sitemap-col-group">知识星球</div></td> <td><div class="sitemap-col-item"><a href="https://t.zsxq.com/jAi2nUf" target="_blank" title="码农会锁">  
          码农会锁
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div><div class="sitemap-col-item"><a href="https://codechina.csdn.net/KnowledgePlanet" target="_blank" title="实战项目">  
          实战项目
          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div></td> <!----></tr></table></div></div></div> <!----> </aside></div><div class="global-ui"><div class="read-more-wrap" style="display:none;position:absolute;bottom:0px;z-index:9999;width:100%;margin-top:-100px;font-family:PingFangSC-Regular, sans-serif;"><div id="read-more-mask" style="position: relative; height: 200px; background: -webkit-gradient(linear, 0 0%, 0 100%, from(rgba(255, 255, 255, 0)), to(rgb(255, 255, 255)));"></div> <a id="read-more-btn" target="_self" style="position: absolute; left: 50%; top: 70%; bottom: 30px; transform: translate(-50%, -50%); width: 160px; height: 36px; line-height: 36px; font-size: 15px; text-align: center; border: 1px solid rgb(222, 104, 109); color: rgb(222, 104, 109); background: rgb(255, 255, 255); cursor: pointer; border-radius: 6px;">阅读全文</a> <div id="btw-modal-wrap" style="display: none;"><div id="btw-mask" style="position: fixed; top: 0px; right: 0px; bottom: 0px; left: 0px; opacity: 0.7; z-index: 999; background: rgb(0, 0, 0);"></div> <div id="btw-modal" style="position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 300px; text-align: center; font-size: 13px; background: rgb(255, 255, 255); border-radius: 10px; z-index: 9999; font-family: PingFangSC-Regular, sans-serif;"><span id="btw-modal-close-btn" style="position: absolute; top: 5px; right: 15px; line-height: 34px; font-size: 34px; cursor: pointer; opacity: 0.2; z-index: 9999; color: rgb(0, 0, 0); background: none; border: none; outline: none;">×</span> <p id="btw-modal-header" style="margin-top: 40px; line-height: 1.8; font-size: 13px;">
                扫码或搜索：<span style="color: #E9405A; font-weight: bold;">bugstack虫洞栈</span> <br>发送：<span id="fustack-token" class="token" style="color: #e9415a; font-weight: bold; font-size: 17px; margin-bottom: 45px;">290992</span> <br>即可<span style="color: #e9415a; font-weight: bold;">立即永久</span>解锁本站全部文章</p> <img src="../../../images/personal/qrcode.png" style="width: 180px; margin-top: 10px; margin-bottom: 30px; border: 8px solid rgb(230, 230, 230);"></div></div></div><div class="pay-read-more-wrap" style="display:none;position:absolute;bottom:0px;z-index:9999;width:100%;margin-top:-100px;font-family:PingFangSC-Regular, sans-serif;"><div id="pay-read-more-mask" style="position: relative; height: 200px; background: -webkit-gradient(linear, 0 0%, 0 100%, from(rgba(255, 255, 255, 0)), to(rgb(255, 255, 255)));"></div> <a id="pay-read-more-btn" target="_blank" style="position: absolute; left: 50%; top: 70%; bottom: 30px; transform: translate(-50%, -50%); width: 160px; height: 36px; line-height: 36px; font-size: 15px; text-align: center; border: 1px solid rgb(222, 104, 109); color: rgb(222, 104, 109); background: rgb(255, 255, 255); cursor: pointer; border-radius: 6px;">星球会员</a></div></div></div>
    <script src="../../../assets/js/cg-styles.js@v=1710892328285" defer></script><script src="../../../assets/js/cg-4.js@v=1710892328285" defer></script><script src="../../../assets/js/cg-3.js@v=1710892328285" defer></script><script src="../../../assets/js/cg-71.js@v=1710892328285" defer></script><script src="../../../assets/js/cg-5.js@v=1710892328285" defer></script><script src="../../../assets/js/cg-6.js@v=1710892328285" defer></script><script src="../../../assets/js/cg-app.js@v=1710892328285" defer></script>
  </body>
</html>
